Javascript 在将each()与多个输入一起使用时存在问题

Javascript 在将each()与多个输入一起使用时存在问题,javascript,jquery,Javascript,Jquery,请看一下这个演示,让我知道为什么我不能使用每个迭代器来检查空输入 $('test')。在('click',函数(e)上{ e、 预防默认值(); $(“输入”)。每个(函数(){ 如果($(this.val().length>0){ $(this.addClass('error'); } }); }); .error{背景色:红色;} A. B 7. W o 66 试验 试试: $('test')。在('click',函数(e)上{ e、 预防默认值(); $(“输入”)。每个(功能(

请看一下这个演示,让我知道为什么我不能使用
每个
迭代器来检查空输入

$('test')。在('click',函数(e)上{
e、 预防默认值();
$(“输入”)。每个(函数(){
如果($(this.val().length>0){
$(this.addClass('error');
}
});
});
.error{背景色:红色;}

A.
B
7.
W
o
66


试验
试试:

$('test')。在('click',函数(e)上{
e、 预防默认值();
$(“输入”)。每个(功能(i、v){
console.log($(v).val().length)
if($(v).val().length==0){
$(v).addClass('error');
}
});
});
。错误{边框颜色:红色;}

A.
B
7.
W
o
66


问题中
html
处的Test
元素没有
属性返回
。长度

尝试在
input
元素处设置
value
属性,以检索
$(this.val()
this.value
中的
.each()
;将
.toggelClass()
替换为
.addClass()
以在
\test
元素
处切换
,如果
输入
长度发生变化,请单击
事件

$(“#测试”)。在(“单击”上,函数(e){
e、 预防默认值();
$(“输入”)。每个(函数(){
$(this.toggleClass(“error”,!this.value.length);
});
});
。错误{
背景色:红色;
}

A.
B
7.
W
o
66



测试
我对你的代码没有问题,一切都在运行。 如果我在输入中填充了一些内容,那么它将运行在if子句中

但是你想用“错误”做什么呢?自版本1.8以来,它已被弃用,并且 在您的编码中没有错误处理程序,您将字符串作为错误处理程序(函数)的参数。 阅读:

在您的情况下,最好为每个函数指定父元素,如:

$("input","body").each(
如果要处理错误,请执行以下操作:

$('#myelement').on('error',function(){ /*your error code */});
对于您的示例,如果要检查输入的值,那么在输入元素上绑定错误处理程序不是正确的方法。错误处理程序catch的想法类似于“未定义”,但如果输入为空,则它不是系统错误

尝试:


如果我正确理解您的查询,您希望在单击“测试”按钮后突出显示空输入字段,而不应突出显示带有值的输入字段。如果是,请检查此解决方案:

$('test')。在('click',函数(e)上{
e、 预防默认值();
$(“输入”)。每个(函数(){
if($(this).val().length==0){
$(this.addClass('error');
}否则{
$(this.removeClass('error');
}
});
});
.error{背景色:红色;}

A.
B
7.
W
o
66



测试
使用
$(this).addClass('error')谢谢Tushar,但这只是一个输入错误,正如您所看到的,if($(this).val().length==0){
if($(this).val().length > 0){
    console.log('Input Val has ' + this).val().length + ' characters')
}