【发布时间】:2018-10-19 22:43:36
【问题描述】:
我正在尝试使用 jquery 验证,但由于某种原因没有显示错误消息,即使我尝试遵循各种示例:
<form action="/" id="paaForm" method="post">
<input type="text" name="testMe" id="testMe" />
<button id="btnSubmit" type="button" value="Save" class="btn btn-default" />
jquery:
$(function () {
$("#paaForm").validate({
rules: {
testMe: {
required: true
},
...
$('#btnSubmit').on('click', submit);
...
function submit() {
if (!$("#paaForm").valid()) {
return;
}
...
已编辑:
我必须添加更多信息。我的应用程序是一个 MVC 应用程序,所以它使用这样的捆绑:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
这样,基于模型属性的 MVC 验证就可以完美运行。但我需要更复杂的验证,这就是为什么我添加了简单的 jquery 验证。正如我上面提到的,它不起作用。但是如果我用这个替换捆绑,
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate.js"));
jquery 验证有效,但 MVC 验证无效,因为我排除了 “~/Scripts/jquery.validate.unobtrusive.js”。 是否有可能使两者都工作?
【问题讨论】:
-
看起来应该是
return false;- 尝试完全阻止 submit() 以查看是否因为 POST 太快而看不到消息:function submit() { return false; } -
您是否在验证函数中指定消息?
-
您是如何提交表单的?您的代码中没有调用
submit(),因此没有调用.valid() -
没有帖子。我在按下按钮时使用 ajax 提交。
-
仅供参考 - 如果您使用的是 Unobtrusive Validation 插件,那么它会自动构造
.validate()方法。您不能简单地提供自己的.validate()实例,因为它将被忽略。该插件仅设计用于在任何特定表单上处理一次.validate()一次,并且始终忽略所有后续实例。否则,只显示足够的代码来重现问题...在浏览器中呈现的 HTML 和 JavaScript。
标签: jquery asp.net jquery-validate unobtrusive-validation