Jquery 如果所有字符计数器均为';不行

Jquery 如果所有字符计数器均为';不行,jquery,Jquery,我们有一个非常简单的字计数器,它可以很好地满足我们的需要。不过,我们现在需要对其进行修改。请访问我们的JSFIDLE网站 (函数($){ $.fn.textareaCounter=函数(选项){ //设置默认值 //$(“textarea”).textareaCounter({limit:100}); var默认值={ 限额:100 }; var options=$.extend(默认值,选项); //插件开始了 返回此值。每个(函数(){ var obj,text,wordcount,li

我们有一个非常简单的字计数器,它可以很好地满足我们的需要。不过,我们现在需要对其进行修改。请访问我们的JSFIDLE网站

(函数($){
$.fn.textareaCounter=函数(选项){
//设置默认值
//$(“textarea”).textareaCounter({limit:100});
var默认值={
限额:100
};  
var options=$.extend(默认值,选项);
//插件开始了
返回此值。每个(函数(){
var obj,text,wordcount,limited;
obj=$(本);
obj.在('Max.+options.limit+'words')之后;
对象键控(函数(){
text=obj.val().replace(/\s+/g,”);;
如果(文本==“”){
字数=0;
}否则{
字数=$.trim(text).split(“”).length;
var url=text.match(/([^\s])+\(com | net | org | biz | gov | edu | mobi | info | ca | us | mil)/g);
如果(URL!=null&&URL.length>0){
wordcount+=(url.length*2);
}
}
如果(字数>选项限制){
html('-'+parseInt(wordcount-options.limit,10)+“words left”);
$(“#提交”).prop('disabled',true);
}否则{
html((options.limit-wordcount)+“words left”);
$(“#提交”).prop('disabled',false);
} 
});
});
};
})(jQuery);
$('textarea').textareaCounter({limit:15});
但我们有一个问题:

  • 如果页面上的任何字符计数器超出其限制,我们需要保持“提交”按钮处于禁用状态。现在,按照我们的编码方式,当字数超过时,submit按钮被成功禁用,但当您键入下一个文本区域时,它会立即重新启用 我对javascript不是很在行,只是为了满足我们的需要而把它拼凑在一起,这是我在部署它之前需要做的最后一件事


    如果您能提供任何帮助,我将不胜感激。

    您可以使用数组保存结果以检查验证。看这个

    添加此位onload以模拟按键,这可能是实现预先验证的最干净/最简单的方法

    var press = jQuery.Event("keyup");
    press.ctrlKey = false;
    press.which = 40;
    $("textarea").trigger(press);
    

    太好了,谢谢你!我知道这是我们需要做的,但我不确定如何做到这一点。不过,当我点击你的链接时,我才意识到另一个小问题——如果文本区域中已经有内容,计数器不会在页面加载上反映出来。我们怎样才能纠正这一点?再次感谢!当然,请看一下添加到末尾的位。我更新了fiddle链接。我不想成为一个麻烦,但现在我遇到了更多有趣的问题。当我尝试使用您的代码分别寻址每个文本区域时,计数器都会出错()。但是使用我的原始代码,它们工作得很好()。有什么想法吗?再次检查我的小提琴链接,看看这是否对你更有效……对不起,我第一次回答的速度太快了,我跳过了一些重要的部分,这些部分在JSFIDLE上效果很好,但在网站上效果不太好。网站上的一切都很正常,除了一件事:提交按钮从未被禁用。我已经检查了两次和三次ID,它看起来很好,所以我不知道为什么它不工作。我认为res数组发生了一些奇怪的事情,因为我不确定它是否存储了真正的值。计数器一直处于负值,但当我对数组执行console.log时,对于所讨论的textarea,它总是有false。你可能不想在现场进行诊断,是吗?
    var res = [];
    
     $("#submit").prop('disabled', false);
                        $.each(res, function (index, value) {
                            if (value) {
                                $("#submit").prop('disabled', true);
                                return false;
                            }
    
    var press = jQuery.Event("keyup");
    press.ctrlKey = false;
    press.which = 40;
    $("textarea").trigger(press);