1

当其中一个字段发生更改时,我在重新验证字段时遇到了一些问题。更具体地说,假设您必须处理总和不能超过 100 的任意数量的字段(用户可以添加新闻或删除现有的新闻)。

我现在正在做的是:

//This basically works on change of the input
$.validator.addMethod('inputBox', checkAmount, 'Value exceeds maximum quantity');

function checkAmount(value, element) {

    if (sumAmounts() <= 100) {
        return true;
    }
    return false;
}

下面是它的工作原理,假设我们有 2 个输入框: - 我在第一个输入框中放了 80 - 我在第二个中放了 30 - 第二个变成红色并显示错误“值超过最大数量”<-很好我!- 我按下提交:两者都变成红色并显示错误<-对我来说很好!- 我编辑了两者中的一个(哪个没有区别)以符合验证规则 - 编辑后的一个变得有效,但另一个仍然显示错误(但我可以提交)<- 这就是问题所在!

当我更改其中一个并且它们的值的总和小于 100 时,我希望所有的框都变得“有效”。

在返回 true 或 false 之前,我尝试在 checkAmount() 函数中插入以下方法: $('inputBox').validate() / .valid(); / 。改变(); / $('form').validate(); / 甚至 $('inputBox').focus(); 可以工作但会经历无限循环xD

有什么建议吗?

4

2 回答 2

1

它不起作用,因为出现问题的不是当前框,而是其他具有相同验证规则的框

于 2012-09-12T12:09:09.277 回答
0

您可以在每个输入框元素上添加 css 类,例如“inputclass”并应用以下 jQuery 脚本。可能是它的工作..

$(function(){
    $(".inputclass").change(function(){
          $(this).validate();
     });
});
于 2012-09-12T10:57:04.830 回答