【问题标题】:Uncaught TypeError: Object [object Object] has no method 'validate'未捕获的类型错误:对象 [对象对象] 没有方法“验证”
【发布时间】:2012-11-11 08:27:31
【问题描述】:

我确定我在某处遗漏了一些东西,但我看不到在哪里。我正在尝试使用 jQuery 验证脚本,但不断收到此错误。我很确定所有文件都在正确的位置等。这是在头:

<script src="scripts/jquery.min.js"></script>
<script src="scripts/jquery.validate.min.js"></script>
<script>
$(document).ready(function() {
    $('#form1').validate();
}); // end ready
</script>

那么我的表格如下:

  <p>
    <label for="name">Your name:
    </label><br />
    <input name="name" type="text" class="required" title="Please enter your name." id="name" maxlength="80" />
  </p>

  <p>
    <label for="email">Your email address:</label><br /><input name="email" type="text" class="required email" title="Please enter a valid email address." id="email" maxlength="100" />
  </p>

  <p>
    <label for="phone">Your contact number:</label><br />
    <input name="phone" type="text" class="required" title="Please enter your phone number" id="phone" maxlength="50" />
  </p>

  <p>
    <label for="message">Message:<br />
    </label>
    <textarea name="message" id="message" cols="50" rows="5"></textarea>
  </p>
  <p>
    <input name="Submit" type="submit" class="form" id="Submit" value="Submit" style="width:100px" />
  </p>

</form>

感谢您的帮助!

【问题讨论】:

  • 首先,检查你的选择器是否正确——试试alert($("#form1").serialize())?
  • 验证脚本是否正确加载?
  • 感谢您的帮助 - 使用“警报”,我得到一个空白警报框。验证脚本肯定在那里,但我不知道如何让 2 说话......我以前使用过相同的脚本,没有问题。
  • 我也遇到了同样的问题,当我在 validate 调用之前将@dbaseman 建议的警报放入我的 ready() 函数中时,它确实显示了表单信息。但我仍然收到此错误。我的 Javascript 错误控制台显示 jquery 和 validate 插件正在加载,我基本上是从文档中获取这个示例,但它以同样的方式失败。

标签: jquery forms validation typeerror


【解决方案1】:

我刚刚遇到这个问题,发现有两个问题导致了这个问题:

我不小心在 HTML 文件的末尾添加了 jquery 引用以加快加载速度。将其移到我正在执行 .validate() 调用的上方解决了该问题。示例:

<script>
   $(document).ready(function(){
      $('#commentForm').validate();
   });
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>

我也遇到了一个问题,我不小心加载了 jquery 两次,一次是在验证加载之后。示例:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
   $(document).ready(function(){
      $('#commentForm').validate();
   });
</script>

这是我需要的:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script>
   $(document).ready(function(){
      $('#commentForm').validate();
   });
</script>

【讨论】:

    【解决方案2】:

    我在 Rails 项目中遇到了同样的问题。

    我的问题在我删除public/assets文件夹后得到解决,因为这导致项目多次加载jquery库(原始库和预编译库)。

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      相关资源
      最近更新 更多