【问题标题】:jquery validation displays no error messagejquery 验证不显示错误信息
【发布时间】: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


【解决方案1】:

仅供参考 - 如果您使用的是 Unobtrusive Validation 插件,那么它会自动构造 .validate() 方法。您不能简单地提供您自己的 .validate() 实例,因为它将被忽略。该插件仅设计用于在任何特定表单上处理一次 .validate() 一次,并且所有后续实例始终被忽略。

【讨论】:

    【解决方案2】:

    您应该如下更改您的代码。您需要通过下面的 jquery 插件授予访问权限以显示错误消息。默认验证集debug: false。设置为true

    $("#paaForm").validate(
       debug: true
    });
    

    这应该适合你。有关 jquery 验证的更多信息click here。祝你好运!

    【讨论】:

    • 还是不行。我虽然那个 debug: true 只是阻止提交。
    • 请参阅我对原始问题的补充。谢谢。
    【解决方案3】:

    只需更改一个功能,您的问题就会解决:-)

    function submit() {
         if (!$("#paaForm").valid()){
             return false; 
          } 
          ...
          return true;
     }
    

    【讨论】:

    • 还是没有运气。据我了解,这都是关于提交表单的,但我不提交,我只是进行 ajax 调用。如果表单无效,我只想显示错误消息。
    • 请参阅我对原始问题的补充。谢谢。
    • 想一想,在浏览器控制台中写入“$.validator”,如果它返回“undefined”,则表示“jquery-validation”插件尚未加载,如果它不返回anythink,尝试不同的浏览器控制台(当前浏览器控制台设置可能会隐藏)
    • 你也可以执行“alert($.validator);”在您的 js 代码中,查看警报中显示的内容,如果未定义/为空,则表示插件未正确加载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多