我用輸入字段創建了一個簡單的'無限'形式。 每當一個空輸入被聚焦時,它會創建一個新的輸入,並在空的輸入字段模糊時,該字段被刪除。在Chrome中觸發兩次jQuery blur事件
我使用下面的代碼,以使這一切發生:
var $input = $('<div/>').html($('<input/>').addClass('value'));
$('form').append($input.clone());
$('form').on('focus', 'input.value', function(e) {
// Add new input if the focused one is empty
if(!$.trim(this.value).length) {
$('form').append($input.clone());
}
}).on('blur', 'input.value', function(e) {
var $this = $(this);
if(!$.trim(this.value).length) {
console.log('REMOVING INPUT');
$this.parent().remove();
} else {
$this.attr('name', 'item-'+$this.val());
}
});
的問題然而,在Chrome時,我切換到另一個應用程序blur
事件被觸發兩次(⌘標籤)。這給出了一個錯誤,因爲它不可能刪除節點,因爲它已經消失了:
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
Firefox似乎正常工作。
那麼爲什麼blur
事件會發生兩次,我怎樣才能防止發生?
編輯 - 試過this question的答案,但沒有運氣。在Chrome中仍然收到錯誤消息,我做錯了什麼?
有沒有一種方法來檢查元素仍然存在?因爲第二次點擊blur
節點被刪除。儘管如此,$(this).length
仍然是非零的。
重複http://stackoverflow.com/questions/9649966/chrome-maybe-safari-fires-blur-twice-on-input-fields-when-browser-loses-foc –
是的我知道這看起來很熟悉: - ) – Pointy
謝謝,愚蠢的我,搜索jQuery :(現在試試 – floorish