2012-06-02 73 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]訪問DOM元素和表演喜歡它是aj查詢對象。

如果您只想要第一個,則需要使用eq()來獲取jQuery對象。

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

你應該綁定委託事件ie。直播事件給那些輸入,因爲他們稍後附加到DOM,所以他們需要實時事件處理程序。

$(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

你是一個DOM元素,而不是jQuery對象上調用.on,試試這個:

var input = $("<input/>", { "type": "text", val: content }); 
cell.append(input); 
input.focus(); 
input.on("blur", function(){ 
    alert("blur"); 
});