0

現在、次のコードを使用して、動的に作成された一連のテキスト ボックスへの入力を制限するイベントに結び付けています。

function createSomeTextBoxes() {
    //code here to add text boxes
    $('.PointerSPSLText').on('keyup', function() { charaterCount( $(this).attr('id'), 30 ) });
    $('.SPSLText').on('keyup', function() { charaterCount( $(this).attr('id'), 30 ) });
}

私が抱えている問題は、これらのイベントが見つかったクラスの最初の要素にのみ関連付けられることです。これは、それぞれに複数のイベントが存在する可能性があるためです。これが問題です。以前はこれに .live イベントを使用していましたが、DOM がロードされ、jquery が残りを処理するときに一度宣言することができました。.live イベントを模倣する方法はありますか、または必要な結果を達成するための最良の方法は何ですか?

4

4 に答える 4

1

動的に作成された要素の場合、次のようなイベント委任を使用する必要があると思います:

$("body").on("keyup", ".PointerSPSLText", function() {
   charaterCount( $(this).attr('id'), 30 )
});
$("body").on("keyup", ".SPSLText", function() {
   charaterCount( $(this).attr('id'), 30 )
});

についての詳細情報on(): http://api.jquery.com/on/

于 2013-09-05T09:21:52.830 に答える
0

ええlive、今は非推奨です。

このような動的onバージョンを使用できます。

 $('#some_static_parent_that_holds_PointerSPSLText').on('keyup','.PointerSPSLText', function(){});
于 2013-09-05T09:22:01.170 に答える
0

新しいバージョンの jQuery では、イベント ハンドラーを動的要素にバインドするon代わりに、イベントを使用します。live

function createSomeTextBoxes() {
    //code here to add text boxes
    $(document).on('keyup', '.PointerSPSLText', function() { 
       charaterCount( $(this).attr('id'), 30 ) 
    });
    $(document).on('keyup','.SPSLText', function() { 
       charaterCount( $(this).attr('id'), 30 ) 
    });
}

要素のセレクターではなく、イベント ハンドラーがドキュメントにバインドされていることに注意してください。セレクターは、on 関数の 2 番目の引数として指定されます。イベントがトリガーされると、イベントは に伝搬され、2 番目の引数として指定されたセレクターと一致するdocumentかどうかが検査されます。パフォーマンスを向上さtargetせるために、代わりに静的な親にバインドできます。document

于 2013-09-05T09:22:04.333 に答える
0

文字の長さだけを制限したい場合は、動的要素を生成する関数にアクセスできるのであれば、input/textarea 要素の「maxlength」属性を使用してみませんか?

<input type="text" name="usrname" maxlength="30">
<textarea maxlength="30">Enter text here...</textarea>
于 2013-09-05T09:43:04.053 に答える