我正在使用这个jQuery验证插件并获得著名的:
$("#")。Validate不是一个函数
当尝试在Firebug中验证时(以及在所有其他浏览器中等效的消息)。
这意味着我试图在jquery-1.4.2.js
和jquery.validate.js
加载之前调用它。在调用validate()
之前,我已经使用Fiddler来显示这些文件正在被请求,因此在没有更好的方法的情况下,我只能假设这两个文件完全加载在浏览器中。
为了解决这个问题,我应该去别的地方看看吗?如果先请求脚本,它们也应该按顺序加载吗?有办法知道吗?
我目前的意见是有其他的东西在插件导致这个(配置等)。我找遍了所有的解决方法,但似乎没有一个适合我。
有什么好主意吗?
我的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>
有简化版本的代码
我不认为.validate()
本身就是jQuery的一个方法。它看起来像是一个验证插件的方法。我建议确保插件被正确包含/安装,当使用插件时,你应该确保你使用的是一个兼容的jQuery版本。
你可以从这个jsFiddle中看到,没有属性validate
的jQuery对象只包含jQuery
似乎是jquery.tools.min.js
(似乎是这个)导致了这个问题。删除后,我可以像往常一样验证。
我将进一步调查,但我只有这个脚本的缩小版本,尽管我冒昧地猜测这是因为它有自己的验证,可能导致方法名称重叠。
我放了:
$. validator.setDefaults ({
submitHandler: function () {alert ('submitted'); }
});
:
jQuery.validator.setDefaults ({
debug: true,
success: 'valid'
});