2012-06-02 143 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"); 
});