如果某些条件为真,如何使用jQuery验证插件执行验证器

时间:2010-11-10 11:22:06

标签: jquery jquery-plugins jquery-validate

我需要根据点击的提交按钮来验证某些字段,并且我有以下代码,它们运行正常。

(我知道已经存在'大于3'的方法,但我想检查一下你是否可以添加自定义方法)

<script type="text/javascript">

        var _btnClicked = "";

        $(document).ready(function() {

            $.validator.addMethod('custom', function(value, element, param) { if (param) { return value > 3 } return true; });

            $("#form1").validate({
                rules: {
                    input1: { required: function(element) { return _btnClicked == 'div1'; } },
                    input2: { custom: function(element) { return _btnClicked == 'div2'; } } },
                messages: {
                    input1: "Required",
                    input2: "Greater than three"
                }
            });
        });

    </script>

<form id="form1">    
          <div id="div1" class="div1">
            <input id="input1" name="input1" type="text" class="div1"/>
            <input id="btn1" name="btn1" type="submit" value="Form 1" class="div1" onclick="_btnClicked = 'div1'; if (!$('#form1').validate().form()) { return false; }" />
          </div>

          <div id="div2" class="div2">
            <input id="input2" name="input2" type="text" class="div2"/>
            <input id="input3" name="input3" type="text" class="div2"/>
            <input id="btn2" name="btn2" type="submit" value="Form 2" class="div2" onclick="_btnClicked = 'div2'; if (!$('#form1').validate().form()) { return false; }" />
          </div>
     </form>

我的问题是,如果我想将第三个输入框限制为最大长度为3,该怎么办?

我无法添加此规则,因为它显然没有传递值3,因此它不知道最大长度是多少!

input3: { maxlength: function(element) { return _btnClicked == 'div2'; } }

有什么想法吗?

或者更好的方法来实现这个目标!?

1 个答案:

答案 0 :(得分:0)

定义一个忽略类(例如&#34; .ignore&#34;),并在用户点击&#34;另一个&#34;的按钮。