我有一个使用jquery验证插件的表单。它用于工作正常,但在某些情况下不是这样:
我编辑现有用户。
此表单中有一个id = user_email的输入字段。
我添加了这条规则:
$("form[data-validate=true]").validate();
addFormRules();
function addFormRules() {
var form_id = $("form[data-validate=true]").attr("id");
if(typeof form_id != 'undefined') {
var resource_id = $("form[data-validate=true]").attr("id").match(/[\d]+$/);
//rules for edit and new
if ($("#user_email").length > 0) {
var url = "/users/check_email"
if( resource_id != null){ url = url + "?id=" + resource_id}
$("#user_email").rules("add", {
remote: {
url: url,
type: "post"
},
messages: {
remote: "There is already a user with this email address!"
}
});
}
}
}
此规则在服务器端触发此功能:
def check_email
@user = User.find_by_email(params[:user][:email])
unless params[:id].nil? or params[:id].blank?
@edited_user = User.find(params[:id])
check = (@user and @user.email != @edited_user.email) ? false : true
else
check = @user ? false : true
end
执行时,该函数返回“true”。
在此之后,我在浏览器控制台中收到此错误消息,一切都冻结了:
TypeError: $.validator.methods[method] is undefined
[Break On This Error]
...result = $.validator.methods[method].call( this, val, element, rule.parameters )
当我创建一个新用户时,一切正常。任何想法出了什么问题?
谢谢!!!
答案 0 :(得分:0)
在搜索了一下之后,我得出的结论是,只有在我触发规则之前提交表单时才会出现此问题:
我作为解决问题的黑客所做的是:
$("form[data-validate=true]").validate({
onsubmit: false
});
这样,在提交时禁用验证。这不是很干净,可能会引起一些问题,但这就是我现在所拥有的......