我不想禁用验证,但向用户显示消息会很好。虽然我认为用户不太可能有合法的需要包括&在文本字段中,我可以看到有人在自由文本字段中键入以<开头的内容;。
是否有一种方法可以检测是否会引发验证异常,并将其显示为验证消息?
以下是我解决此问题的方法:
-
创建一个验证规则,比如
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');
-
对要验证的
form
元素调用validate
方法:$('form').validate({errorClass: 'input-validation-error'});
-
将规则添加到元素中,例如所有文本输入和文本区域:
$('input:text, textarea').each(function () { $(this).rules('add', { potentiallyDangerousRequestRule: true }); });
在应用规则之前,请确保在表单上调用validate
方法。