Write the Code. Change the World.

7月 12

前因

当INPUT[type=file]控件上已经选择过一次文件之后,再次点击它选择同一个文件时change事件就不会触发。因为第二次选择后里面的文字和第一次是一样的,没有改变。还有个更蛋疼情况是有些浏览器会自动记住控件上的文字,即使页面关闭后重新打开还是会恢复到原来的文字。这时候选择同路径的文件也不会触发change事件。

处理

表单:

<form id="form">
  <input type="file" name="file" id="file">
  <input type="submit" />
</form>

jquery:

$(function(){
  form.reset(); 
  var file;
  $("#form").on("change","#file",function(e){
    console.log(this.value);
    //每次选中都保存旧元素,并使用新的控件替换
    $(this).clone().replaceAll(file=this);
  }).submit(function(){
    //提交时把之前保存的旧元素替换回去
    $("#file").replaceWith(file);
  });
});

来源

http://blog.csdn.net/microandsmall/article/details/60326487

发表评论

电子邮件地址不会被公开。 必填项已用*标注