2012-06-23 18 views
6

入力フィールドを持つ単純な「無限」フォームを作成しました。 空の入力がフォーカスされるたびに新しい入力が作成され、空の入力フィールドのぼかしではフィールドは削除されます。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でエラーメッセージが表示されますが、何が間違っていますか?

See updated fiddle

要素がまだ存在しているかどうかを確認する方法はありますか? 2回目にblurが発生するため、ノードは削除されます。しかし、$(this).lengthは依然として非ゼロです。

+2

http://stackoverflow.com/questions/9649966/chrome-maybe-safari-fires-blur-twice-on-input-fields-when-browser-loses-foc –

+0

はい私はこれがよく分かっていたことを知っていた: - ) – Pointy

+0

ありがとう、愚かな私は、jQueryを探した:(今試して – floorish

答えて

0

あなたがそれを必要として、このバイオリンは、行動をしているかどうかを確認してください、 http://jsfiddle.net/EPxkh/8/

http://www.quirksmode.org/js/introevents.html

これは、点滅のバグのように見える

http://www.quirksmode.org/js/events_order.html

http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html

+0

努力をいただきありがとうございます!残念ながら、まだChromeでNOT_FOUND_ERR:DOM Exception 8を取得していますか? – floorish

関連する問題