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 回答