Php jQuery验证插件-远程验证每个字段
我喜欢这个插件(),但如果我想远程验证所有字段,我会觉得有限。我已经有了一个php验证类,并希望使用它 假设我有如下字段:Php jQuery验证插件-远程验证每个字段,php,jquery,jquery-validate,Php,Jquery,Jquery Validate,我喜欢这个插件(),但如果我想远程验证所有字段,我会觉得有限。我已经有了一个php验证类,并希望使用它 假设我有如下字段: fname 名字 用户名 电子邮件 假设我想远程验证整个表单…这样做似乎是多余的 $('#login form').validationOptions({ rules: { "fname": { remote: { url: 'process.php',
- fname
- 名字
- 用户名
- 电子邮件
$('#login form').validationOptions({
rules: {
"fname": {
remote: {
url: 'process.php',
type: 'post',
dataType: 'json',
dataFilter: function(data) {
var json = JSON.parse(data);
console.log(json);
if (json.result === true) {
return true;
}
return '"' + json.message + '"';
}
}
},
"lname": {
remote: {
url: 'process.php',
type: 'post',
dataType: 'json',
dataFilter: function(data) {
var json = JSON.parse(data);
if (json.result === true) {
return true;
}
return '"' + json.message + '"';
}
}
},
........etc......
},
});
我是否可以告诉插件远程验证整个表单,而不必每次都声明js中的每个字段或远程规则和url…类似于
$('#login form').validationOptions({
remote: {
url: 'process.php',
type: 'post', //All form fields should be posted
dataType: 'json',
dataFilter: function(data) {
var json = JSON.parse(data);
console.log(json);
if (json.result === true) {
return true;
}
return '"' + json.message + '"';
}
},
});
我知道代码不会像我写的那样工作,但你应该明白我的意思。是的,我知道我可以使用ajax post来实现这一点,并使用成功回调来实现我所需要的功能,但我使用的是一个具有插件且运行良好的模板。我想使用他们已经拥有的功能。我唯一想做的更改是在不声明每个字段和远程规则的情况下远程验证整个表单。QuoteOP: “有没有一种方法可以让插件远程验证整个表单,而不必每次都声明js中的每个字段或远程规则和url…” “…验证…而不声明每个字段和远程规则。” 如果对每个字段使用相同的选项声明
remote
规则,那么是的,有一种更简单的方法可以在每个字段上声明它。假设您的remote
规则已在运行,请使用.rules()
方法,如下所示
$('input[type="text"]').each(function() {
$(this).rules('add', {
remote: {
// your remote options
}
});
});
- 使用
以$('input[type=“text”]”)
表单中的所有
文本
输入
元素为目标。否则,请使用所需的任何选择器,以针对相关字段
- 使用jQuery
将.each()
方法应用于选择器所针对的元素组中的每个元素。.rules()
方法是绕过插件限制的一种方法,当附加到表示一组元素的jQuery选择器时,它会忽略除第一个元素之外的所有元素.each()
- 您仍然必须调用
方法(使用任何其他选项),以便在.validate()
表单上初始化插件
- 不确定是否需要
和/或dataType
选项。默认类型为dataFilter
,发送的数据是要计算的字段的值。如果JSON
从PHP返回一个JSON字符串,该字符串将成为错误消息echo
{}
按钮或每行缩进至少四个空格即可格式化代码块。。。那也许行得通。但是,对于其他字段,如select、radio、checkbox、textarea,我需要为每种类型的元素声明add方法吗?正如您所看到的,我正在尝试使用干代码。我可以做一些像。。。对于form#的每个form元素,某种形式是否应用此规则?或使用一个类,然后将规则应用于该类的那些元素$('.validate theses').rules('add',{remote:{//your remote options}}});})@greaterKing,就像我在回答中所说的,“[只要]使用您需要的任何选择器来定位相关字段”~因此,是的,类
将是一个定位解决方案。@greaterKing,但也像我在回答中所说的,.each()
方法是一种绕过插件限制的方法,当附加到表示一组元素的jQuery选择器时,它会忽略除第一个元素以外的所有元素。“~因此,不,如果不将.rules()
附加到$('.validate this')
,则必须将其包装在.each()
中。只需按照我的示例代码将我的$('input[type=“text”]”)选择器替换为您的$('.验证这些“)
选择器即可。@greaterKing,只有这么多。对于我的回答,我选择了适合你情况的最佳方法,我很公平,非常感谢你的帮助。我会接受这个答案。