2012-06-02 2 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オブジェクトを取得する必要があります。あなたはDOM要素ではなく、jQueryオブジェクトに.onを呼び出している

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

、これを試してみてください。

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