jQuery使用ajax远程问题验证和动态添加规则。(可能的风险值范围?)
我很难让以下代码按预期工作:jQuery使用ajax远程问题验证和动态添加规则。(可能的风险值范围?),jquery,ajax,jquery-validate,Jquery,Ajax,Jquery Validate,我很难让以下代码按预期工作: var counter = 0; $('#add_row').click(function(e) { $('input[name="user_email[' + counter + ']"]').rules("add", { required: true, email: true, remote: { url: 'process.php', type: 'pos
var counter = 0;
$('#add_row').click(function(e) {
$('input[name="user_email[' + counter + ']"]').rules("add", {
required: true,
email: true,
remote: {
url: 'process.php',
type: 'post',
cache: false,
data: {
user_email: function(Counter) {
return $('input[name="user_email[' + counter + ']"]').val();
},
},
},
});
Counter++;
});
下行返回未定义的
return $('input[name="user_email[' + counter + ']"]').val();
如果没有变量计数器,它将按预期从表单输入字段返回值。但它不再是动态的
例如
此代码有什么问题?引用操作:“行下返回未定义” 你的错误是没有意义的,因为这些线是完全多余的
data: {
user_email: function(Counter) {
return $('input[name="user_email[' + counter + ']"]').val();
},
},
您不需要data
选项,因为默认情况下remote
方法会自动发送此字段的值。通常,如果需要随字段值一起发送附加数据,例如密码字段和用户名,则使用数据
选项,这里显然不是这样
只需删除整个数据
选项即可
您还混淆了计数器变量的大小写敏感度 您有
var计数器
,但随后您增加了counter++
。它们的拼写相同,但它们也区分大小写,因此需要将Counter++
更改为Counter++
这应该是预期的工作
var counter = 0;
$('#add_row').click(function(e) {
$('input[name="user_email[' + counter + ']"]').rules("add", {
required: true,
email: true,
remote: {
url: 'process.php',
type: 'post',
cache: false
}
});
counter++;
});
谢谢你的回复 我添加数据的意图是:发送用户电子邮件,而不是用户电子邮件[?] 我似乎通过以下几点实现了我的目标:
var input_email = $('input[name="user_email[' + counter + ']"]');
input_email.rules("add", {
required: true,
email: true,
remote: {
url: 'process.php',
type: 'post',
cache: false,
data: {
user_email: function() {
return input_email.val();
},
},
},
});
counter++;
似乎在元素名称中使用var计数器不起作用
var counter = 0;
$('#add_row').click(function(e) {
$('input[name="user_email[' + counter + ']"]').rules("add", {
required: true,
email: true,
remote: {
url: 'process.php',
type: 'post',
cache: false
}
});
counter++;
});
var input_email = $('input[name="user_email[' + counter + ']"]');
input_email.rules("add", {
required: true,
email: true,
remote: {
url: 'process.php',
type: 'post',
cache: false,
data: {
user_email: function() {
return input_email.val();
},
},
},
});
counter++;