【问题标题】:jQuery revalidate text field when checkbox changes复选框更改时jQuery验证文本字段
【发布时间】:2012-05-29 08:10:05
【问题描述】:

我有一个包含以下两个 HTML 元素的表单:

<input type="text" name="vrm" id="vrm" size="15" maxlength="15" value="" />
<input type="checkbox" id="foreign_registration" name="foreign_registration" value="yes" />

以及以下 jQuery 验证规则(使用此处的验证插件:http://bassistance.de/jquery-plugins/jquery-plugin-validation/):

vrm: {
       remote: {
            url: "/json/vrm-validate.php",
            data: {
              foreign_registration: function() {
                return $('#foreign_registration').is(':checked');
              }
            }
          }
        }

远程脚本依赖于这两个字段,因为对文本字段执行的验证取决于是否检查了外国注册。

问题是,如果我在文本字段中输入内容然后更改复选框,验证规则不会重新运行。我认为这是因为验证规则只附加到文本字段,所以它只会在更改时运行。

有没有办法说“这两个元素是相关的,所以如果它们中的任何一个发生变化,就假设应该再次检查文本字段规则”?我不想给复选框附加任何验证规则,因为它不需要在客户端进行验证,并且远程脚本执行的验证规则太复杂,无法在 jQuery 中实现。

【问题讨论】:

    标签: jquery jquery-plugins jquery-validate


    【解决方案1】:

    我通过电子邮件发送的另一个答案是:

    isOI 是我的复选框,Item 是我需要重新验证的文本框 当复选框被点击时。

    $("#isOI").change(function () {
      var item = $("#Item");
      item.data("previousValue", null).valid();
    });
    

    显然现有答案不适用于此人。

    【讨论】:

    • 此方法强制该字段重新验证。否则,如果字段本身的值没有改变,则不会重新验证。
    • 这正是我想要的 - 强制字段 A 在字段 B 更改时重新验证,即使字段 A 没有更改。
    【解决方案2】:

    您可以在复选框更改时调用验证函数

    $(':checkbox').change(function(){
        $('form').validate();
    });
    

    【讨论】:

    • 那不会重新验证整个表单吗?我真的只想验证文本字段,尤其是表单可能会随着时间的推移而增长。
    • 是的,它会在我快速搜索后找到这个stackoverflow.com/q/2738925/801241,它可能对你想做的事情有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2014-11-13
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多