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

Val*_*ior 9 html javascript jquery 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值时,不应该调用此更改事件.

有任何想法吗?

编辑:

我已经用行为创建了一个jsfiddle

Nat*_*gos 6

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

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

  • 我建议使用[`on`](http://api.jquery.com/on/)而不是`bind`. (2认同)