rak*_*los 4 javascript validation jquery jquery-validate
我正在尝试编写一个自定义验证,如果在提交表单时textrea中存在html,则会产生错误.
我有以下 - 它不工作,我不知道为什么.
我也不明白这个不引人注目的部分可以告诉我如何做到这一点,因为我正在看到有关它的其他例子.
文本区域有一个"注释"类,该表单称为"noteform"
<script type="text/javascript" >
$(document).ready(function () {
$.validator.addMethod('nohtml', function (value, element) {
var text = $(".note").text();
if ($(text).length > 0) {
return false;
}
else {
return true;
}
}, 'Html not allowed');
// // **not sure what to do here**
// $.validator.unobtrusive.adapters.add('containsnohtml', {}, function (options) {
// options.rules['nohtml'] = false;
// options.messages['nohtml'] = options.message;
// });
$('#noteform').validate({
rules: { nohtml: "required nohtml" }
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
MHo*_*lis 14
这里有几个问题.一个是你试图混合不引人注目和常规的jquery验证.如果你想使用这样的验证,那么你需要确保jquery.validate.unobtrusive.js不包括在内.这是因为jquery.validate.unobtrusive.js自动解析并生成文档的验证器,并且首先validate要检查是否存在现有验证器,如果有,则退出.
如果您决定采用非不显眼的路线,请务必不要使用,$.validator.unobtrusive.adapters.add否则会导致错误jquery.validate.unobtrusive.js.
因为我认为你正在使用MVC3,所以我建议使用不引人注目的验证.如果您要进行不显眼的验证,您有两个选择,通过添加data-val="true" data-val-nohtml="Html not allowed"到JohnnyO建议的textarea并自己设置data-*属性data-valmsg-for="note" data-valmsg-replace="true"来显示错误消息.或者您可以创建自己的DataAnnotation属性.
这是addMethod的代码(两种验证都需要)
<script type="text/javascript">
(function ($) {
$.validator.addMethod('nohtml', function (value, element) {
// Test 'value' for html here. 'value' is the value of the control being validated.
return true; // Return true or false depending on if it passes or fails validation, respectively.
}, 'Html not allowed');
} (jQuery));
</script>
Run Code Online (Sandbox Code Playgroud)
并且不引人注目的javascript如下
$.validator.unobtrusive.adapters.addBool('nohtml');
Run Code Online (Sandbox Code Playgroud)
关于如何制作自定义验证属性,因为我不确定你正在使用什么语言,假设你正在使用MVC3,或者你甚至在问了4个月之后甚至还需要这些信息,我只想离开这些链接供参考.
MVC 3中传统与不引人注意的JavaScript验证的简要比较 - Mitchell Trent的博客
ASP.NET MVC 3自定义验证 - Microsoft Developer Network