使用网页上传文件控件(<input type=”file” />)时,为了减少用户无意操作而导致上传路径错误,降低服务端无效请求的压力,会要求其只能通过“浏览…”按钮选择,而不能通过输入框直接输入和编辑。 虽然<input type=”file” />有一个属性readonly,但是当这个属性生效时,IE下不仅不能编辑,也不能通过“浏览…”按钮选择,而在Firefox和Opera下xx没有任何作用。所以只能通过其他手段来达到目的了,即阻止通过键盘或鼠标对文件输入框的操作。有如下三种方法: 方法1:直接通过Javascript阻止通过键盘或鼠标对文件输入框的操作
请看 方法2:利用浮动层遮盖住上传文件控件的输入框部分
请看 方法3:用input和button伪装成上传文件控件,真正的上传文件控件透明的浮动在其上面对于上传文件控件的处理方式和方法1一样,但是因为伪装的原因,可以解决方法1中Opera下退格键、删除键和剪切按钮对文本框的编辑,但是依旧解决不了Firefox粘贴按钮和Opera下右键粘贴按钮对其的编辑。 其实这个方法的{zd0}好处就是可以随心所欲的。 请看 方法4:利用CSS,使透明的上传控件只出现按钮部分,且浮动在指定按钮的上面因为也是伪装,所以也可以随心所欲的控制样式,这个方法应该是比较彻底的实现了只选择不能编辑的目标。需要注意的是通过设置上传控件的font-size,可以改变它的大小。(多谢小马和许湛) 请看 ps,javascript代码是基于YUI的,目的是为了说明解决思路,转化为其他框架或者脱离框架都很容易。 |