Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery使用ajax远程问题验证和动态添加规则。(可能的风险值范围?)_Jquery_Ajax_Jquery Validate - Fatal编程技术网

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++;