繁体   English   中英

jQuery验证自定义方法不起作用

[英]jQuery validation custom method didn't work

我在jQuery验证器上添加了这样的方法

    $.validator.addMethod(
        'myEqual', 
        function (value, element) {
            return value == element.value; // this one here didn't work
        }, 
        'Please enter a greater year!'
    );

    $.metadata.setType("attr", "validate");

    $("#educationForm").validate({
        showErrors: function(errorMap, errorList) {
            this.defaultShowErrors();
        },
        errorPlacement: function(error, element) {
            error.appendTo( element.parent("td").next("td") );
        },
        /*success: function(label) {
            label.text("ok!").addClass("success");
        },*/
        rules: {
            txt_end: {
                required: true,
                myEqual: "#txt_begin"
            }
        },
        submitHandler: function() {}
    });

表格看起来像这样

<div id="wrapper_form">
    <form id="educationForm" name="educationForm" method="post" action="">
    <table width="500" border="0">
      <tr>
        <td width="100">Period:</td>
        <td width="200"><input type="text" name="txt_begin" id="txt_begin" size="8" maxlength="4" class="required year ui-widget-content ui-corner-all" />&nbsp;to&nbsp;
        <input type="text" name="txt_end" id="txt_end" size="8" maxlength="4" class="required year ui-widget-content ui-corner-all" /></td>
        <td width="200"></td>
      </tr>
      <tr>
        <td colspan="2">
        <input type="submit" name="btn_submit" id="btn_submit" value="Submit" class="ui-button ui-state-default ui-corner-all" />
        <input type="button" name="btn_cancel" id="btn_cancel" value="Cancel" class="ui-button ui-state-default ui-corner-all" />
        </td>
        <td>&nbsp;</td>
      </tr>
    </table>
    </form>
</div>

但是为什么我添加的自定义方法不起作用?

return value == element.value; // this one here didn't work

它总是返回true为任何值我在这里错过了什么吗? 我没有使用内置方法,因为稍后在表单中,我将需要编写另一种方法来检查是否大于或等于和小于或等于(“> =”和“ <=”)。等于和降低或等于,方法是将“ ==”替换为“> =”或“ <=”

阅读您的代码后,我发现您正在使用自定义方法尝试比较两个文本输入,正在将参数传递给验证器: myEqual: "#txt_begin"

为此,您必须处理addMethod回调函数的第三个参数:

$.validator.addMethod('myEqual', function (value, element, param){// param will
    return value == $(param).val();                               // have  
}, 'Message');                                                    // "#txt_begin"

为什么不使用Validate插件提供的“ equalTo”方法?

rules {
   txt_begin : 'required' , 
   txt_end: { equalTo: '#txt_begin' }
}

您不必为txt_end放置必填项,因为它必须等于txt_begin且txt_begin是必填字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM