我正在使用this jQuery validation插件并获得名人:
$(“#Form”)。validate不是函数
尝试在Firebug中验证(以及所有其他浏览器中的等效消息)。
这意味着我在加载jquery-1.4.2.js
和jquery.validate.js
之前尝试调用它。在调用validate()
之前,我已经使用Fiddler来显示这些文件正在请求,所以在没有更好的方法的情况下,我只能假设这两个文件已在浏览器中完全加载。 / p>
为了解决这个问题,还有其他我应该看的地方吗?如果首先请求脚本,那么它们也应该按顺序加载?有没有办法找出来?
我目前认为插件中还有其他内容导致此问题(配置等)。我已经搜索了所有,但解决方案似乎并不适用于我。
任何想法在哪里看?
我的jQuery是:
$(document).ready(function () {
console.log("loaded");
$("#Form").validate({
rules: {
container_0$centre_0$txtFirstName: { required: true }
}
});
})
,表格是:
<form method="post" action="/url" id="Form" enctype="multipart/form-data">
<div class="ctrlholder">
<label for="firstname">First Name</label>
<input name="container_0$centre_0$txtFirstName" type="text" id="txtFirstName" class="required" /><em>*</em>
<div id="errFirstName" class="error" style="display:none;">Please enter your first name</div>
</div>
</form>
有简化的代码版本。
答案 0 :(得分:1)
我没有看到.validate()
本身就是jQuery的一种方法。它看起来像是一个验证插件的方法。我建议确保正确包含/安装that plug-in,并且在使用插件时,您应该确保使用兼容版本的jQuery。
您可以从this jsFiddle看到jQuery对象上没有属性validate
,只包含jQuery。
答案 1 :(得分:1)
jquery.tools.min.js
(似乎是this)似乎导致了问题。删除后,我可以照常验证。
我会进一步调查,但我只有脚本的缩小版本,虽然我冒险猜测它是因为它has its own validation,可能导致方法名称重叠。
对于这种边缘案例,这将是一个很好的未来资源。
答案 2 :(得分:0)
我说:
$. validator.setDefaults ({
submitHandler: function () {alert ('submitted'); }
});
相反:
jQuery.validator.setDefaults ({
debug: true,
success: 'valid'
});
它对我有用。