Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从未调用jQuery验证方法_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript 从未调用jQuery验证方法

Javascript 从未调用jQuery验证方法,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我知道最近我问了很多关于jQuery验证的问题,但我想我现在的问题已经归结为基本问题了 如果我有这个HTML页面: <html> <head> <title>validation test</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script

我知道最近我问了很多关于jQuery验证的问题,但我想我现在的问题已经归结为基本问题了

如果我有这个HTML页面:

<html>
<head>
    <title>validation test</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.js"></script>
</head>
<body>
    <form id="theform">
        <div id="num" name="num">86</div>
    </form>
    <script type="text/javascript">     
        var validationObject = {
            rules: {
                num: {
                  numtest:true
                }
            }
        };

        $.validator.addMethod("numtest", function(value, element) {
            return value == 42;
         });

        $('form').validate(validationObject);
        if ($("form").valid())
            alert("VALID");
        else
            alert ("INVALID");
    </script>
</body>
</html>
然后我希望警报无效,因为num是86而不是42。但是,我得到的却是有效的;我定义用于执行验证的函数没有被调用,我在返回值==42时设置了一个断点;它永远不会被击中。为什么会这样?如何确保调用验证函数

自定义方法中缺少验证错误消息。您还应该使用this.optionalelement,以便可以将字段留空,并单独使用所需的规则。按照您编写的方式,该字段也是强制性的

将整个过程放在就绪处理程序中,确保在调用.validate方法之前表单存在。然而,这并不是破坏表单的原因,因为JavaScript是在HTML之后调用的

此插件无法识别div,因为它不是有效的表单输入元素。将其更改为、或元素

第3项是唯一会破坏你的密码的东西

工作演示:


请仔细阅读和大量在线示例。

我不熟悉该插件,但您试图对不是表单元素的div执行验证是的,我正在编写的实际代码,这是一个有点奇怪的情况,我想验证一堆下拉列表是否都与div中的值相加。这就是为什么我要验证div。但即使我将其更改为文本字段,它仍然无法工作…不可能。更改为输入类型='text'将修复此问题:
$.validator.addMethod("numtest", function(value, element) {
    return this.optional(element) || (value == 46);
}, "validation error message");
<input type="text" id="num" name="num" />