我有一个使用 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 )
当我创建一个新用户时,一切正常。有什么想法吗?
谢谢!!!