2012-06-23 14 views
6

में jQuery ब्लर इवेंट दो बार निकाल दिया गया मैंने इनपुट फ़ील्ड के साथ एक सरल 'अनंत' फ़ॉर्म बनाया। हर बार जब एक खाली इनपुट केंद्रित होता है तो यह एक नया बनाता है, और खाली इनपुट फ़ील्ड के धुंध पर, फ़ील्ड हटा दिया जाता है।क्रोम

देखें 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()); 
    } 

}); 

समस्या फिर भी है, कि क्रोम में blur घटना दो बार निकाल दिया जाता है जब मैं किसी अन्य अनुप्रयोग पर स्विच करें (टैब)। यह एक त्रुटि देता है, क्योंकि यह संभव नोड दूर करने के लिए नहीं है, क्योंकि यह पहले से ही चला रहा है:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 

फ़ायरफ़ॉक्स ठीक से काम करने लगता है।

तो blur ईवेंट दो बार निकाल दिया गया है और मैं इसे कैसे होने से रोक सकता हूं?

EDIT - this question में उत्तर का प्रयास किया, लेकिन कोई भाग्य नहीं। अभी भी क्रोम में त्रुटि संदेश प्राप्त करें, मैं गलत क्या कर रहा हूं?

See updated fiddle

वहाँ अगर तत्व अभी भी मौजूद है की जाँच करने के लिए एक तरीका है? क्योंकि दूसरी बार 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

का उपयोग करने का प्रयास करें प्रयास के लिए धन्यवाद! दुर्भाग्यवश, मुझे अभी भी क्रोम में 'NOT_FOUND_ERR: DOM अपवाद 8' मिलता है? – floorish