我遇到了这个问题,我用Units和Price指定了Quanitity。如果给出单位,也必须提供价格,如果给出价格,还必须提供单位。但它们都是空白的,那就没关系了。
+----------+-------+
| Quantity | Units |
+----------+-------+
| | |
+----------+-------+
我已经使用以下代码来检查这个条件,它确实适用于第一个类实例,但不适用于前一个实例。
$(".Quantity").rules("add",{
required:function(element){
return $(".Quantity").next('input').val() > 0;
},
});
$(".Units").rules("add",{
required:function(element){
return $(".Units").prev('input').val() > 0;
},
});
所以基本上它只检查出现的第一个值而不是其余值。我想要的是它通过完整的页面并比较每个出现的prev next值。在我的情况下,数据排列在表格中,每个单元格包含数量和价格输入框,我想通过prev下一步检索。但它没有用。
Here is codepen demo。请注意,我在示例中也使用了引导对话框,该示例显示了错误的总数,并且它再次在类的第一个实例处停止,而不显示所有错误,因为我使用的是基于类的规则。任何帮助将不胜感激。
答案 0 :(得分:1)
使用此插件的方法,当使用针对多个元素的选择器时,必须将方法包含在jQuery .each()
...
$(".Quantity").each(function() {
$(this).rules("add",{
required: function(element) {
return $(".Quantity").next('input').val() > 0;
},
});
});
否则,当您不使用each()
时,仅考虑第一个匹配元素。
答案 1 :(得分:0)
自己回答。我必须使用以下代码来解决我的问题
$('.Units').each(function () {
$(this).rules("add", {
onkeyup: false,
required: function (element) {
return element.nextElementSibling.nextElementSibling.value > 0 ? true : false;
},
})
});
$('.Cost').each(function () {
$(this).rules("add", {
required: function (element) {
return element.previousElementSibling.previousElementSibling.value > 0 ? true : false;
},
})
});
我使用的实际代码更复杂,其中prev和next值相互依赖。