如何在jQuery验证中添加带消息的验证规则?

Eja*_*rim 4 jquery jquery-validate

我尝试过以下代码,但无法获取错误消息.

var v = jQuery("#account_info").validate({
    //errorLabelContainer: $("#result"),
    submitHandler: function(form) {
        jQuery(form).ajaxSubmit({                               
           target: "#checkOut_error",                   
            success: function(msg) {
                //setTimeout("window.location='MyBids.php'", 2000);             
                if(msg == '<?php echo OBJECT_STATUS_SUCCESS;?>')    {
                    $('#checkOut_error').html('<div class="msg msg-thanks">Bid Submitted Successfully !</div>');
                    //setTimeout("window.location='"+<?php echo LINK_TO_TENBID;?>+"'", 2000);
                    //setTimeout("window.location.reload(true)",2000);
                   //$('.result').html('<div class="msg msg-thanks">Bid Submitted Successfully !</div>');

                } else{
                                        $("#checkOut_error").html(msg);
                                    }
            },
            clearForm:  false,
            resetForm:  false
        });
    },
           errorLabelContainer: "#checkOut_error",
          rules: {
                phone_number: {
                    required: true

                },
                recipient_name: {
                    required: true,
                    min_length: 6
                }

          },
          messages: {
                recipient_name: {
                    required: "Enter recipient name",
                    min_length: "Name should be atleast 6 characters long"
                }
          }
 });
Run Code Online (Sandbox Code Playgroud)

- 如何添加规则和错误消息?

- 验证插件使用哪个属性:name或id?

- 如何一次显示一条错误消息?

Spa*_*rky 9

- 验证插件使用哪个属性:name或id?

根据文档,插件要求所有input字段都包含name attribute.在指定rulesmessages内部时.validate(),您将使用name attribute.

- 如何添加规则和错误消息?

min_length规则应该包含下划线.是的minlength.否则,您的代码看起来正确.

基于您的代码的简单演示......

jQuery的:

$(document).ready(function () {

    $("#account_info").validate({
        rules: {
            phone_number: {
                required: true
            },
            recipient_name: {
                required: true,
                minlength: 6  // <-- removed underscore
            }
        },
        messages: {
            phone_number: {
                required: "this field is required"
            },
            recipient_name: {
                required: "Enter recipient name",
                minlength: "Name should be at least {0} characters long" // <-- removed underscore
            }
        },
        submitHandler: function (form) { // for demo
            alert('valid form');  // for demo
            return false;  // for demo
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

HTML:

<form id="account_info">
    <input type="text" name="phone_number" />
    <br/>
    <input type="text" name="recipient_name" />
    <br/>
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

工作jsFiddle演示:http: //jsfiddle.net/rfgRL/


此外,使用类似规则时minlength,您的自定义消息可以包含占位符{0},它会插入您的特定规则定义.

minlength: 6
Run Code Online (Sandbox Code Playgroud)

使用自定义消息...

minlength: "Name should be at least {0} characters long"
Run Code Online (Sandbox Code Playgroud)

会自动显示......

名称长度至少应为6个字符


由于您只在DOM上调用.validate() 一次,只准备使用其选项初始化验证插件,因此将其分配给变量没有任何意义; 它不会在任何地方重复使用......至少它不应该.

var v = jQuery("#account_info").validate({...});
Run Code Online (Sandbox Code Playgroud)

简直就是这个......

jQuery("#account_info").validate({...});
Run Code Online (Sandbox Code Playgroud)

在代码的其他地方,如果您需要测试form有效性或重新触发有效性测试,请使用该.valid()方法.它将返回任何挂起的表单错误的布尔值和触发器显示.例:

if (jQuery("#account_info").valid()) { ...
Run Code Online (Sandbox Code Playgroud)