我正在尝试熟悉jQuery验证自定义方法,似乎有点困惑。为什么我的自定义方法中的this.optional(元素)总是返回false?
这是我的代码示例:
<script type="text/javascript">
$(document).ready(function(){
$.validator.addMethod('customemethod', function(val, el){
return this.optional(el) || false;
}, 'custom method says its INVALID !');
$('#myform').validate({ignore: '*[ignore]'});
$('#validate').click(function(){
$('#result').text($('#myform').validate().form());
return false;
});
});
</script>
<form id="myform">
<div><input type="text" id="customfield" name="customfield" /></div>
<script type="text/javascript">
$(document).ready(function(){$('#customfield').rules('add', { required: true, customemethod: true } ) } );
</script>
<div><input type="text" id="customfield2" name="customfield2" /></div>
<script type="text/javascript">
$(document).ready(function(){$('#customfield2').rules('add', { required: false, customemethod: true } ) } );
</script>
<div id="result"></div>
<input id="validate" type="submit" />
</form>
如果不需要元素并且它的值不为空 - 调用验证方法,在这种情况下我需要返回true。 但是这个选项(el)总是假的:(
我该如何解决?如何检查自定义方法中是否需要元素? 感谢。
答案 0 :(得分:8)
optional
为false,因此您可以对该字段执行验证,但前提是它不为空。例如,如果电子邮件地址是可选的,则必须验证格式,但仅限于提供值。如果未提供值,则optional
返回true,因此不执行其余评估。这是此方法的目的。如果您需要价值不是空的,则必须要求它。如果您需要空或不空,您根本不需要验证。