怎样阻止input file文件域的change/onchange事件多次重复执行?

方法和原理就是:

  • 你本身是无法阻止文件域的onchange事件多次 被 触发的, change(function(){....}); 方法会被多次执行的, 这个是无法改变的!
  • 你可以做的是: 当每次 执行change()方法的是, 通过一个标志变量, 来判断change方法是否已经被执行, 当由 标志变量 探测到change方法 已经被执行过, 时就直接让 change方法退出
function upGo(){
  $('#upload').click();  // 触发fie域点击事件动作
  var changeExed = false; // 这个是标志变量, changeExed: change is executed?

  $('#upload').change(function (ev){
    if(!changeExed){  
      changeExed = true;  // 执行一次后, changeExed就设置为true, 所以该代码段 只能执行一次, 后面如果发生的 change事件执行的代码 为空!  但是, 第二次及以后的change事件还是 发生 并 是执行了的! 

      var uf = ev.currentTarget.files[0];
      var fname = uf.name;
      .......
     };  // change 方法结束


///     要注意  在change方法中, 返回fale 并不能让change代码只执行一次, 只是: return false 阻止浏览器的默认行为 不能???

猜你喜欢

转载自www.cnblogs.com/bkylee/p/12380294.html
今日推荐