jQuery验证:如何更改自定义方法上的字段值?

jQuery验证:如何更改自定义方法上的字段值?,jquery,ajax,forms,jquery-validate,Jquery,Ajax,Forms,Jquery Validate,我正在尝试实现一个加密库,它应该运行在一些字段上,并填充另一个隐藏字段 我的最佳选择是复制默认的remote方法,该方法运行AJAX调用并返回“pending”,因此jQuery.Validate将等待它提交表单(以防表单有效)。这似乎很好,因为(通过使用断点)我确实可以在页面实际提交之前在加密字段中识别正确的值 然而,似乎表单提交行为已经被调用,验证期间对表单字段的任何更改都不会再冒泡:我的后端服务器仍然接收到空字段 以下是我试图实现的一个示例: $.validator.addMethod('

我正在尝试实现一个加密库,它应该运行在一些字段上,并填充另一个隐藏字段

我的最佳选择是复制默认的
remote
方法,该方法运行AJAX调用并返回“pending”,因此jQuery.Validate将等待它提交表单(以防表单有效)。这似乎很好,因为(通过使用断点)我确实可以在页面实际提交之前在加密字段中识别正确的值

然而,似乎表单提交行为已经被调用,验证期间对表单字段的任何更改都不会再冒泡:我的后端服务器仍然接收到空字段

以下是我试图实现的一个示例:

$.validator.addMethod('encrypted', function(value, element, params, message) {
    var validator = this;
    var errors = {};
    //gets the other field names from params and mingles stuff
    $.post(params.url, { data: data }, {
        success: function(data) {
            element.value = data.value;
            //this here was copied from the `remote` validation method
            var submitted = validator.formSubmitted;
            validator.prepareElement(element);
            validator.formSubmitted = submitted;
            validator.successList.push(element);
            delete validator.invalid[element.name];
            validator.showErrors();
        }
    });
    return 'pending';
};

$('form').validate({
    token: { encrypted: { fields: [/*...*/] }
});

是否有方法在验证期间更改字段值?

定义“在验证期间”?你是说在点击提交按钮之后,但在提交表单之前?是的,@Sparky。在插件运行的验证过程中。您有两个选项<代码>submitHandler在单击按钮且表单有效后激发<代码>invalidHandler在单击按钮且表单无效后激发。否则,根据当时考虑的场地的有效性进行射击。没有一个选项或回调会说“整个表单正在验证,我们还不知道结果”。仍然不完全理解为什么要在验证期间更改输入的值。其想法是运行一段代码,在填充其他字段(并基于其值)的情况下填充隐藏的输入。由于这种行为是通过我的团队(手动)使用的,所以我想创建一个自定义方法,这样我们就可以用一个易于使用的自定义方法实现jqueryvalidate。我将研究如何使用
submitHandler
,但我认为我会遇到同样的问题:更改字段值不会发送新值。