我不想禁用验证,但是向用户显示消息会很棒。虽然我认为用户在文本字段中包含 的合法需求极不可能,但我可以看到有人在自由文本字段中输入以 < 开头的内容。
有没有办法检测会抛出验证异常并将其显示为验证消息?
我不想禁用验证,但是向用户显示消息会很棒。虽然我认为用户在文本字段中包含 的合法需求极不可能,但我可以看到有人在自由文本字段中输入以 < 开头的内容。
有没有办法检测会抛出验证异常并将其显示为验证消息?
这是我解决此问题的方法:
创建一个验证规则,比如potentiallyDangerousRequestRule
:
var potentiallyDangerousRequestRegex = /[<>]|&#/, // <, >, &#
potentiallyDangerousRequestErrorMessage = 'The error message';
$.validator.addMethod('potentiallyDangerousRequestRule', function (value) {
if (value == '')
return true;
return !potentiallyDangerousRequestRegex.test(value);
}, potentiallyDangerousRequestErrorMessage);
$.validator.unobtrusive.adapters.addBool('potentiallyDangerousRequestRule');
在要验证的元素上调用validate
方法:form
$('form').validate({errorClass: 'input-validation-error'});
将规则添加到元素,例如所有文本输入和文本区域:
$('input:text, textarea').each(function () {
$(this).rules('add', { potentiallyDangerousRequestRule: true });
});
validate
确保在应用规则之前调用表单上的方法。