我很难让下面的代码按预期工作:
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++;
});
以下行返回undefined
return $('input[name="user_email[' + counter + ']"]').val();
如果没有变量Counter,它会按预期从表单输入字段返回值。但那时它已经不再充满活力了。
例如
return $('input[name="user_email[0]"]').val();
此代码有什么问题?
答案 0 :(得分:0)
引用OP: “以下行返回undefined”
return $('input[name="user_email[' + counter + ']"]').val();
你的错误是没有实际意义的,因为这些行完全是多余的......
data: {
user_email: function(Counter) {
return $('input[name="user_email[' + counter + ']"]').val();
},
},
您不需要data
选项,因为remote
方法默认会自动发送此字段的值。通常情况下,如果您需要发送其他数据以及字段值,例如密码字段和用户名,则会使用data
选项,这显然不是这里的情况。
只需删除整个data
选项。
您还混淆了计数器变量的区分大小写。
您有var counter
,但稍后您会增加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++;
});
答案 1 :(得分:-1)
感谢您的回复。
我添加数据的意图是:发送user_email而不是user_email [?]。
我似乎已经通过以下方式实现了我想要的目标:
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计数器并不起作用。