使用jQuery validate插件"this [0]未定义"消息

Joe*_*Joe 12 jquery jquery-validate

我已经开始使用jQuery validate插件了.我在显示错误消息时遇到了一些问题,并希望创建一个测试页面,在那里我可以尝试一些事情.尽管昨天有相同的设置为我工作,我现在收到以下消息:

this[0] is undefined
Run Code Online (Sandbox Code Playgroud)

查看jQuery代码,它在以下部分失败(特定行突出显示):

valid: function() {
    if ( $(this[0]).is('form')) {
        return this.validate().form();
    } else {
        var valid = true;
        **var validator = $(this[0].form).validate();**
        this.each(function() {
            valid &= validator.element(this);
        });
        return valid;
    }
}
Run Code Online (Sandbox Code Playgroud)

从它看,它必须认为我的验证器不是一个形式,但它是.真的不明白发生了什么.尝试将valid()方法的结果打印到控制台时,代码才会失败.到目前为止,这是我的代码.感谢任何帮助.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <style type="text/css">
        th {
            text-align: center;
        }
        .labelCol {
            width: 60px;
        }
    </style>
    <script type="text/javascript" src="jquery-1.6.1.full.js"></script>
    <script type="text/javascript" src="jquery.validate.full.js"></script>
    <script type="text/javascript">
        $('#myform').validate({
                        rules: {
                            thisval: "required"
                        }
        });
        console.info($('#myform').valid());
    </script>
</head>

<body>
    <form id="myform" name="myform" action="" method="post">
        <table>
            <tr>
                <th colspan="2">Header Section</th>
            </tr>
            <tr>
                <td class="labelCol">This Title</td>
                <td class="valueCol">
                    <input type="text" name="thisval" id="thisval"
                        maxlength="45" size="45" />
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="submit" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Ber*_*ron 19

您的#myform形式没有被加载执行脚本的时候,因此$('#myform')不匹配任何东西.将脚本包装在ready事件处理程序中.

<script type="text/javascript">
   $(function() { // <-- add this
      $('#myform').validate({
                    rules: {
                        thisval: "required"
                    }
      });
      console.info($('#myform').valid());
   });
</script>
Run Code Online (Sandbox Code Playgroud)