4

如果我在表单中添加了自定义验证方法,如何在提交之前触发它?

我没有装饰我的表单字段,但我认为将新方法添加到我的规则部分会触发该方法,但它不起作用。

$.validator.addMethod('myCustomValidation', function (data)
{
   // do some work here 
   return myValidationResult;

}, 'Please respond.');


$("#myFormId").validate({        
    rules: {
         "myCustomValidation": {required: true}
    },
    messages: {
       "myCustomValidation": {
           required: "Enter some information before proceeding",        
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});

我希望在按下“提交”按钮时触发验证。

但是,如果我将验证类名称添加到除提交按钮之外的任何表单字段,则会触发此规则。只是似乎无法在提交之前触发它..

4

6 回答 6

1

我没有使用过这个addMethod功能,但我可以建议你:

$.validator.methods.myCustomValidation = function(value, element, param) {
    // Perform custom validation and return true or false
    return value === '' || /^([0-9]{10})$/.test(value);
};


$("#myFormId").validate({        
    rules: {
        myElement: { 
            myCustomValidation: true 
        }
    },
    messages: {
        myElement: { 
            myCustomValidation: "Enter some information before proceeding" 
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});
于 2009-11-18T18:15:59.363 回答
0

将您的代码包装在:

$(function(){
   //your code goes here
});

这将在页面加载时附加验证事件。

于 2009-11-18T18:11:42.150 回答
0

你错过了一些东西。规则应该是这样的。

rules: {
    "elemId": {
        required: true,
        myCustomValidation: true
     }
},
于 2009-11-18T18:17:10.610 回答
0

我认为您正在寻找 addClassRules

$.validator.addMethod('myCustomValidation', function (data)
{
   // do some work here 
   return myValidationResult;

}, 'Please respond.');

$.validator.addClassRules({
  myCustomValidation: { myCustomValidation: true, required: true }
});

$("#myFormId").validate({        
    messages: {
       "myCustomValidation": {
           required: "Enter some information before proceeding",        
        }
    },
    submitHandler: function(form)
    {
        // do the work to submit this form
    }
});
于 2010-02-16T01:51:34.917 回答
0

调用.valid()触发验证:

$("#myFormId").valid();
于 2009-11-18T18:30:55.980 回答
0

我推荐使用原生的$.validator.addMethod来绑定自定义方法。之后,只需调用 jqueryblur()即可element触发验证。

由于我怀疑 jQuery Validate 中存在竞争条件,我不得不旋转等待以避免在以编程方式调用验证时收到空白错误消息

            //after binding custom validation method
           if($("#myElement").length){//add any checks you need
                var millisecondsToWait = 500;
                //Spin because it works
                setTimeout(function() {
                    $("#myElement").blur();
                    //$("#myElement").valid();//or this
                }, millisecondsToWait);
于 2017-04-20T19:13:56.653 回答