2012-06-02 8 views
5

मैं 1.7.2 का उपयोग कर रहा है, जिसमें मैं समझता हूँ कि यह काम करना चाहिए:jquery का उपयोग कर इनपुट टेक्स्ट बॉक्स पर ब्लर/फोकसआउट ईवेंट कैसे ट्रिगर करते हैं?

// cell is a jquery representation of a <td> element 
cell.append($("<input/>", { "type": "text" }).val(content));   
cell.children()[0].focus(); 
cell.children()[0].on("blur", function() { 
    alert("blur"); 
} 

इनपुट बॉक्स जोड़ दिया जाता है, फोकस लेता है और फिर JavaScript कंसोल मुझसे कहता है:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'on' 

मैं था अगर कोई जानता है कि मैं धुंध/फोकसआउट घटना कैसे पकड़ सकता हूं तो आभारी रहें।

उत्तर

4

आप [0] साथ डोम तत्व तक पहुँचने और ऐसा लगता है जैसे कार्य कर रहे हैं एजे है प्रश्न वस्तु

यदि आप केवल पहले चाहते हैं, तो आपको jQuery ऑब्जेक्ट प्राप्त करने के लिए eq() का उपयोग करने की आवश्यकता है।

cell.children().eq(0).focus().on("blur", function() { 
    alert("blur"); 
}; 
4

आपको प्रतिनिधि कार्यक्रम यानी बाध्य करना चाहिए। उन इनपुट में लाइव इवेंट, क्योंकि वे बाद में डोम में शामिल हुए, इसलिए उन्हें लाइव इवेंट हैंडलर की आवश्यकता है।

$(cell).on('blur focusout', ':text', function() { 
    alert(this.value); 
}); 

उसके बाद निम्न की तरह गति प्रदान: अपने कोड के अनुसार

$(':input:first', cell).blur(); // or $(':text', cell).trigger('blur'); 

$(':input:first', cell).focusout(); // or $(':text', cell).trigger('focusout');. 

cell.children(':input:eq(0)').focus().on("blur", function() { 
    alert("blur"); 
}; 

या

cell.children(':input:first').focus().on("blur", function() { 
    alert("blur"); 
}; 
0

आप एक डोम तत्व है, jQuery वस्तु पर .on बुला रहे हैं, इस प्रयास करें:

var input = $("<input/>", { "type": "text", val: content }); 
cell.append(input); 
input.focus(); 
input.on("blur", function(){ 
    alert("blur"); 
}); 
संबंधित मुद्दे