email1: {
required: true,
blacklist: true,
beanEmailValidator: true,
minlength: 6,
maxlength: 70,
remote: {
type: "GET",
url: llbFieldValJSONURL,
data: {
fieldData : function() {
return $("#enterEmail").val();
}
},
dataType:"json",
dataFilter: function(data) {
var json = jQuery.parseJSON(data);
if(json.error == "true") {
return "\"" + json.errorMessage + "\"";
} else {
return success;
}
}
}
}
此函数检查用户名的唯一性,如果不唯一则返回错误。问题是远程方法在有效后不会进行任何额外的调用。我需要它在每次输入/更改值时触发。
例如,如果我输入 3 个非唯一用户名,则每次都会进行调用。如果我输入一个唯一的用户名,则调用正确并且用户名返回为有效。所以该字段是有效的。现在,如果我输入另一个非唯一(无效)用户名,远程方法将不会再次触发。
想知道它是否以某种方式缓存响应?
无效(非唯一)响应:
{"error":"true","errorMessage":"<b>The User Name you chose is already in use.</b> Please enter another name."}
有效(唯一)响应:
{"error":"false","errorMessage":""}
编辑
在 SO 上看到了这个:
https://stackoverflow.com/a/1821667/335514
$("#site").change(function() {
$("#email").removeData("previousValue");
});
所以插件似乎正在缓存响应。插件是否有关闭缓存的方法,或者cache: false
在 ajax 调用中添加一个可以做同样的事情?
编辑
这些方法都不起作用。似乎一旦一个字段被标记为有效,它就不会再次进行远程调用。关于如何修复的想法?将函数放入它自己的 addMethod 会阻止这种情况吗?