入力フィールドを持つ単純な「無限」フォームを作成しました。 空の入力がフォーカスされるたびに新しい入力が作成され、空の入力フィールドのぼかしではフィールドは削除されます。jQueryブラーイベントがChromeで2回発生しました
は、私はそれをすべてを実現するために、次のコードを使用しexample here
を参照してください:
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
イベントが2回発生し、どうして私がそのようなことが起きるのを防ぐことができますか?
EDIT - 答えはthis questionで試してみましたが、運はありません。まだChromeでエラーメッセージが表示されますが、何が間違っていますか?
要素がまだ存在しているかどうかを確認する方法はありますか? 2回目にblur
が発生するため、ノードは削除されます。しかし、$(this).length
は依然として非ゼロです。
http://stackoverflow.com/questions/9649966/chrome-maybe-safari-fires-blur-twice-on-input-fields-when-browser-loses-foc –
はい私はこれがよく分かっていたことを知っていた: - ) – Pointy
ありがとう、愚かな私は、jQueryを探した:(今試して – floorish