2017-06-13 33 views
9

我創建了一個指令來處理文件。當我改變文件或選擇一個新的我把這個代碼:更改元素值時調用的事件值IE 11/Angular

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與behaviour

回答

6

看來element.val('')發出新change事件,造成你的聽衆多次調用。也就是說,你可以通過檢查輸入值來避免這種奇怪的行爲,如下所示:

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

我建議使用['on'](http://api.jquery.com/on/)而不是'bind'。 – Renan

+0

element.bind已被棄用,取而代之的是在()上使用。 – fernandoocf