我的某些文本字段有服务器端验证消息。字段'title'是必需的字段服务器端,在类中具有'[Required]'数据属性,但这似乎只在回发或表单提交上检查。我正在jquery .change事件中保存'title'文本字段,下面是sudo代码。但我想使用我的validationmessage来显示来自客户端检查的错误消息。不知道怎么做这个?
HTML
@Html.ValidationMessageFor(model => model.Overview.Title, "", new { @class = "text-danger" })
呈现为
<span class="field-validation-valid text-danger" data-valmsg-for="Overview.Title" data-valmsg-replace="true"></span>
如果我想在javascript中进行一些客户端检查,然后使用此元素显示客户端错误消息,我可以这样做。我只想保护自己使用另一个隐藏的元素。我知道我必须使用
数据valmsg换= “Overview.Title”
因为所有其他文本字段的其他数据属性相同。
如果我想检查以确保“标题”的长度大于1,那么在这里显示客户端错误消息的最佳方法是什么?
也许像 -
$('#Overview_Title').change(function() {
var title = $(this).val();
if (title.length == 0) {
// show error message "title has to be a value to save"
}
else {
// do other work like save to db
}
});
答案 0 :(得分:3)
你有几种方法可以做到这一点,但我认为这是最简单的方法:
默认情况下,MVC会将jquery.validate
javascript库捆绑到您的页面中。由于您已经使用[Required]
属性标记了该字段,因此Html.EditorFor
会将正确的属性绑定到您的HTML中,以便在必要时进行验证。
要使当前逻辑使用最小的更改,您可以在输入字段周围添加<form>
标记。我认为您需要使用validate
方法才能开箱即用。然后你的javascript会变成这样的东西:
$('#Overview_Title').change(function() {
if ($(this).valid()) {
// do your stuff
}
else {
// error message displayed automatically. don't need to do anything here unless you want to
}
});
这样您就可以使用Required
属性设置错误消息文本,ValidationMessageFor
应显示错误消息,而无需您付出额外的努力。
查看此plunkr作为概念证明:http://plnkr.co/edit/ip04s3dOPqI9YNKRCRDZ?p=preview
修改强>
我不是肯定的我理解你的后续问题。但是如果你想动态地向一个字段添加一个规则,你可以沿着这些方向做一些事情:
$( "#someinput" ).rules( "add", {
required: true,
messages: {
required: "a value is required to save changes"
}
});
您可以通过执行此类操作来添加未反映在服务器端的规则。然后你可以用同样的方式验证输入。
答案 1 :(得分:0)
如果您想使用jquery进行100%客户端验证,可以使用以下内容:
$('#Overview_ISBN').on('input', function() {
var input=$('#Overview_Title');
var is_name=input.val();
if(is_name){input.removeClass("invalid").addClass("valid");}
else{input.removeClass("valid").addClass("invalid");}
});
的代码
在我发布的示例中,如果您开始输入ISBN并且标题为空,您将收到错误消息。
在你的问题中不确定你想如何触发错误,所以我认为它是一个不同输入的条目