更改元素值时调用的更改事件IE 11 / Angular

时间:2017-06-13 14:28:38

标签: javascript jquery html angularjs

我已经创建了一个处理文件的指令。当我更改文件或选择一个新文件时,我会调用此代码:

element.val('');

我这样做是为了能够删除所选文件并在此之后选择相同的文件。如果我不这样做,当我删除所选文件并再次选择相同时,则不会调用change事件,我无法做我需要做的事情。

我只需要知道在更改输入值时是否有一种方法可以避免IE调用change事件。

我搜索了一下,发现了这样的评论:

The onchange event on textboxes and textarea elements only fires when the element loses focus, and if its value is now other than its value when it got focus.

因此,当我以编程方式更改de值时,不应该调用此更改事件。

有什么想法吗?

编辑:

我用behaviour

创建了一个jsfiddle

1 个答案:

答案 0 :(得分:6)

似乎element.val('')发出新的change事件,导致多次调用您的侦听器。也就是说,您可以通过检查输入值来避免这种奇怪的行为,如下所示:

element.bind('change', function(){
    if(!element.val()) {
      return;
    }
    element.val('');
    // code goes here
});