Javascript 如何等待第一列中的所有表行都显示为100;“完成”;在第二栏
我有一个表,它的行数是动态的,取决于数据库记录。因此,不管表行数是多少,当第一列中的所有行都是100时,第二列中的所有行都将显示“完成” 现在,当我在第一行输入100时,第二列中的所有行都将显示“完成”。如何等到第1列中的所有行都是100才显示“完成”Javascript 如何等待第一列中的所有表行都显示为100;“完成”;在第二栏,javascript,jquery,Javascript,Jquery,我有一个表,它的行数是动态的,取决于数据库记录。因此,不管表行数是多少,当第一列中的所有行都是100时,第二列中的所有行都将显示“完成” 现在,当我在第一行输入100时,第二列中的所有行都将显示“完成”。如何等到第1列中的所有行都是100才显示“完成” $(“.test”).on('keyup',function(){ var set=$('.test').val(); 如果(设置==100){ $('.result').val(“完成”); } }); 以下是实现这一目标的方法之一。使用in
$(“.test”).on('keyup',function(){
var set=$('.test').val();
如果(设置==100){
$('.result').val(“完成”);
}
});代码>
以下是实现这一目标的方法之一。使用input
事件而不是keyup
在每个事件中,检查所有输入字段是否都有值
如果所有字段都有值,请检查是否所有字段的值都为100
$(“.test”).on('input',function(){
checkAndUpdateSecondColumn();
});
函数checkAndUpdateSecondColumn(){
var empty=$(“input.test”).filter(函数(){
返回此值!=“”;
});
if($((“input.test”).length==empty.length){
var sum=$('.test').toArray().reduce(函数(和,元素){
返回和+数字(元素值);
}, 0);
$('.result').val('');
如果(总和=$(“input.test”).length*100){
$('.result').val('done');
}
}
}
以下是实现这一目标的方法之一。使用input
事件而不是keyup
在每个事件中,检查所有输入字段是否都有值
如果所有字段都有值,请检查是否所有字段的值都为100
$(“.test”).on('input',function(){
checkAndUpdateSecondColumn();
});
函数checkAndUpdateSecondColumn(){
var empty=$(“input.test”).filter(函数(){
返回此值!=“”;
});
if($((“input.test”).length==empty.length){
var sum=$('.test').toArray().reduce(函数(和,元素){
返回和+数字(元素值);
}, 0);
$('.result').val('');
如果(总和=$(“input.test”).length*100){
$('.result').val('done');
}
}
}
代码的问题是,当您分配变量集时,您试图读取包含多个DOM元素的jQuery集合的.val()
。返回第一个匹配元素的值;其他的没有被评估
听起来您想要做的是评估整个集合,并确保在显示“完成”消息之前,所有集合都与您想要的值匹配。实现此行为的一种方法是根据jQuery集合中每个元素的值进行过滤(类的每个元素“test”
)
代码的问题在于,当分配变量set
时,您试图读取包含多个DOM元素的jQuery集合的.val()
。返回第一个匹配元素的值;其他的没有被评估
听起来您想要做的是评估整个集合,并确保在显示“完成”消息之前,所有集合都与您想要的值匹配。实现此行为的一种方法是根据jQuery集合中每个元素的值进行过滤(类的每个元素“test”
)
var testInputs = $('.test');
var desiredValue = 100;
testInputs.on('keyup', function() {
var testInputsSetToDesiredValue = testInputs.filter(function() {
return parseInt(this.value, 10) === desiredValue;
});
if (testInputsSetToDesiredValue.length === testInputs.length) {
$('.result').val('done');
}
});