1

テキストフィールドの状態がフォーカスされているときに、いくつかのアクションを実行する必要があります。

このコードは、テキストフィールドが標準のインライン要素である場合に正常に機能(テスト)されます。ただし、テキストフィールドがモーダルウィンドウ内にある場合は機能しません。jqueryライブラリがロードされた時点でモーダルウィンドウが非表示になっていると思いますが、問題が発生します。

どうすればこれを機能させることができますか?

    $('#name').focus(function() {
console.log('do something');
}); 
4

1 に答える 1

1

jQueryライブラリがロードされた時点でモーダルウィンドウが非表示になっていると思いますが、問題が発生します。

あなたは正しく推測しました、おそらくあなたは特定のイベントの後にあなたのモーダルダイアログのコンテンツをロードします。

今コード:

$('#name').focus(function() {
console.log('do something');
}); 

おそらく$(document).ready()イベントに関連付けられています。このイベントは、新しいドキュメントが読み込まれるたびに発生しますが、ajax呼び出しが完了しても発生しません。

この問題を解決するには、必要な関数を実行するダイアログの読み込みイベントのデリゲートをアタッチする必要があります。jQueryのバージョンに応じてAPIまたはLIVEを参照してくださいhttp://api.jquery.com/on/

必要に応じて、行われるクリックイベントごとに汎用デリゲートを使用し、次のようにクリックが行われるたびにフォーカスイベントをアタッチしてみてください。

$(document).on("click", "#name", function() {
    $(this).focus(function() {
        console.log('do something');
    });
});

これにより、クリックが行われるたびに、つまり#name要素が存在する場合に、focus関数が#name要素にアタッチされようとします。

于 2013-02-26T07:23:18.580 に答える