7

テキストボックスを動的に生成したこのようなシナリオがあります。最大 15 文字のテキスト ボックスを検証し、特殊文字を制限する必要があります。

以下は、document.ready() でテキストボックスを生成し、貼り付けイベントをそれらにバインドするコードです。

$(document).ready(function(){

  //Generate textboxes..i have some logic by which i am generating
  //textboxes on the fly and giving textboxes a class flagText
  GenerateFlagBoxes();

  //i am binding the textboxes by class names
   var $flagArea = $('.flagText');
    $flagArea.bind('paste', function () {
        var element = this;
        setTimeout(function () {
            alert($(element).val());
        }, 100);
    });

});

しかし、これは機能していません。私が提供したアラートは来ていません。コントロールが準備完了イベントで作成され、イベントをリッスンするようにバインドできないと思います。間違っています。なぜそれが起こっているのかわかりません。いくつかの提案が欲しいです。

前もって感謝します。

このフィドルは機能しています。チェックしています。どこか間違っている可能性があります。間違っているところを更新します。

http://jsfiddle.net/mnsscorp/8QFGE/1/

はい、現在作業中です。準備が整ったドキュメントで、貼り付けイベントをバインドできます。コードのどこかが間違っていました。:) 提案をありがとう。

4

3 に答える 3

8

動的に生成された要素のイベント委譲を試す -

$(document).on('paste','.flagText',function(){
    var element = this;
    setTimeout(function () {
        alert($(element).val());
    }, 100);
});
于 2013-04-24T17:18:31.407 に答える
3

動的要素の場合、 などのイベント デリゲートが必要ですon

これを試して:

$("body").on('paste', '.flagText', function () {
    setTimeout(function () {
        alert($(this).val());
    }, 100);
});
于 2013-04-24T17:18:26.697 に答える
0

ターゲットを使用

var $flagArea = $('.flagText');
    $flagArea.bind('paste', function (e) {
        setTimeout(function () {
            alert(e.target.value);
        }, 100);
    });
于 2016-06-30T04:47:05.190 に答える