如何使用 jQuery 为每个动态创建的文本字段添加字符数?

发布于 2025-01-01 10:10:08 字数 707 浏览 2 评论 0原文

这是我用于文本字段的代码,

$('#option').bind('keyup', function() {
    var maxchar = 140;
    var cnt = $(this).val().length;
    var remainingchar = maxchar - cnt;
    $('#charsLeft').html(remainingchar);
    if(remainingchar > 0){
        $('#charsLeft').css('color', 'green');
    }else{
        $('#charsLeft').css('color', 'red');
    }
});

效果很好,但现在我需要将其应用于克隆的所有文本输入。每个克隆的输入字段都会添加一个数字。

例如:

option1
option2
option3 ...

我正在尝试这个,但没有走得太远:

var list = [];
for (var i = 1; i <= 3; i++) {
    list.push(i);
}
$(list).each( function(i, val){
    $('#option').limit('140', '#charsLeft');
});

任何帮助将不胜感激。

This is the code that I am using for my text fields

$('#option').bind('keyup', function() {
    var maxchar = 140;
    var cnt = $(this).val().length;
    var remainingchar = maxchar - cnt;
    $('#charsLeft').html(remainingchar);
    if(remainingchar > 0){
        $('#charsLeft').css('color', 'green');
    }else{
        $('#charsLeft').css('color', 'red');
    }
});

This works great but now I need to apply it to all text inputs that are cloned. Each cloned input field gets a number added to it.

For example:

option1
option2
option3 ...

I was playing around with this but didn't get far:

var list = [];
for (var i = 1; i <= 3; i++) {
    list.push(i);
}
$(list).each( function(i, val){
    $('#option').limit('140', '#charsLeft');
});

Any help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

も让我眼熟你 2025-01-08 10:10:08

这是完整的解决方案。

您可以使用 .live() 将现有事件附加到新克隆的元素。

$("input[name='option']").live('keyup', function() { });|

工作演示:http://jsfiddle.net/f6zKy/

最终解决方案:http://jsfiddle.net/spJV3/5/

Here is the complete solution.

You can attach the existing event to newly cloned elements using .live().

$("input[name='option']").live('keyup', function() { });|

The working demo: http://jsfiddle.net/f6zKy/

Final Solution: http://jsfiddle.net/spJV3/5/

如痴如狂 2025-01-08 10:10:08

要获取以“option”开头的 ID

$("[id^=option]")

,请参阅 jquery 文档: http://api.jquery.com/category /选择器/

to get ID that starts with "option"

$("[id^=option]")

see jquery documentation: http://api.jquery.com/category/selectors/

丢了幸福的猪 2025-01-08 10:10:08

尝试这样做:

1)如果所有这些文本框都可以放入容器中,请这样做。

2) 使用一个类来标识所有这些文本框。

3) 使用 .delegate().on() (v1.7),这样您就不需要将事件附加到每个项目

$('#container').on('keyup', 'input.optiontype', function(e) {
   ...
});

当前设置的主要问题是 .bind() 仅附加到现有对象

try this:

1) if all of those textboxes can be put inside a container, do so. <div id='container'>

2) use a class to identify all of those textbox. <input type='text' class='optiontype' id='option' />

3) use .delegate() or .on() (v1.7), this way you won't need to attach the event to each item

$('#container').on('keyup', 'input.optiontype', function(e) {
   ...
});

The main issue with your current setup is that .bind() only attaches to the existing objects

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文