javascript - 在我输入有效输入并提交其余输入字段为空的表单后,JS 验证不运行

标签 javascript php jquery jquery-validate

我正在开发一个 Web 目录,其中一个页面上有一个表单。使用JS验证插件。在未填写任何输入字段的情况下提交表单时,表单会按预期在每个输入字段下方抛出错误!但是提交表单只填写一个输入框会刷新当前页面,因为操作值设置为当前页面,其中包含 PHP 代码,而不是停留在同一页面上继续为其余字段抛出错误尚未填写!我在网上搜索过,没有找到任何有用的信息来找出脚本的问题。这里的任何人都可以查看下面的代码并推荐最佳解决方案吗?谢谢。

$(document).ready(function()  {
    $("#userForm").validate({
        rules: {
            cname: {
                required: true,
                lettersonly: true,
                minlength: 3
            },
            cemail: {
                required: true,
                email: true
            },
            cphone: {
                required: true,
                number: true,
                minlength: 10,
                maxlength: 10
            },
            cbusiness: {
                required: true,
                url: true
            },
            cbcategory: {
                required: true,
                minlength: 6
            },
            curl: {
                required: true,
                minlength: 6
            },
        },
        messages: {
            cname:  "Please enter your name",
            cemail: "Please enter a valid email address",
            cphone: {
                required: "Please enter your phone number",
                number:   "Please enter only numeric value"
            },
            cbusiness: {
                required: "Please enter your business",
                },
            cbcategory: {
                required: "Please enter a business category",
                },
            curl: {
                required: "Please enter the URL to your website",
                },
            }
    });
});

表格如下。

<form action="" method="post" name="userForm" id="userForm">

                            <input type="text" name="cname"  id="cname" placeholder=" Your Name">
                            <input type="text" name="cemail" id="cemail" class="email" placeholder="Your Email">
                            <input type="text" name="cphone" id="cphone" placeholder="Your Phone">
                            <input type="text" name="cbusiness"  id="cbusiness" class="email" placeholder=" Your Business">
                            <input type="text" name="cbcategory" id="cbcategory" placeholder="Business category">
                            <input type="text" name="curl" id="curl" class="email" placeholder="URL"><br>       

                            <label for='message'>Enter the code in the box below : </label>
                            <img src="captcha.php?rand=<?php echo rand();?>" id='captchaimg'>
                            <input type="text" id="captcha_code" name="captcha_code">

                            <input type="submit" name="Submit" id="Submit"  value="Submit" class="button1"><br>
                Can't read the image? click <a href='javascript: refreshCaptcha();'>here</a> to refresh.
                        </form>

最佳答案

假设您正确地包含了验证库,您将必须为所有验证类型设置消息,例如:

messages: {
  cname: {
     required: "Please enter your name",
     lettersonly: "Letters only",
     minlength: "Min length 3 required"
  },
  cemail: {
    required: "Please enter a valid email address",
    email: "Invalid email"
  }
}

工作 JSFIDDLE .

你必须像这样包含插件文件:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.js"></script>

更新:

在聊天中与 OP 讨论后,我们得出的结论是必须正确包含插件文件,并且他使用的 jQuery 版本 (v 1.7.1) 与插件版本 (v 1.16.0) 不兼容).所以我们必须为 lettersonly 添加自定义方法。

自定义方法的代码:

jQuery.validator.addMethod("lettersonly", function(value, element) {
  return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please");

关于javascript - 在我输入有效输入并提交其余输入字段为空的表单后,JS 验证不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526680/

相关文章:

javascript - 使用 jQuery 或 javascript 删除循环行内高度

javascript - 如何在jQuery中使用javascript调用方法?

Javascript 中的 HAML 中的 Javascript

javascript - 如何在 Prototype 中重新实现外部弹出式 jQuery 代码?

javascript - 当 Javascript 中没有定义集合时,为什么推送不起作用?

php - 使用php显示oracle数据库中的多行

php - 在 Mysql 中构建标签搜索引擎 - 排序问题

javascript - 寻找匹配的脚本和示例

php - 如何正确更改 PHP CodeSniffer 中的行字符限制配置?

javascript - 在 JavaScript 中换行