我正在尝试实现一个加密库,该库应该运行到某些字段并填充另一个隐藏字段。
我最好的选择是复制默认的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: [/*...*/] }
});
有没有办法在验证期间更改字段值?