【发布时间】:2010-11-10 11:22:05
【问题描述】:
我需要根据单击的提交按钮来验证某些字段,并且我有以下代码,它运行良好。
(我知道已经有一个“大于 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'; } }
有什么想法吗?
或者更好的方法来实现这一点!?
【问题讨论】:
-
maxlength: 3有什么问题? -
我希望它只有在使用特定按钮提交表单时才会触发验证。
标签: jquery jquery-plugins jquery-validate