使用jquery从名称结构的输入中获取值

时间:2013-04-24 17:23:42

标签: jquery

文本输入具有带数组样式的名称(name =“post [2] [id]”)。我需要在jQuery脚本中使用此结构名称获取此值。这样我就可以像普通数组一样工作。

$(document).ready(function(){   
    var data = {};
    data['post'] = {};

    var fields = $("#user input");

    $.each(fields, function(index, field) {
        data[$(field).attr('name')] = $(field).val();
    });

    console.log(data);
});


<div id="user">
    <input type="text" name="name" value="Joy" />
    <input type="text" name="post[1][id]" value="2" />
    <input type="text" name="post[1][name]" value="test" />
    <input type="text" name="post[2][id]" value="3" />
    <input type="text" name="post[2][name]" value="test 2" />
</div>

现在我的名字在数据变量中添加了字符串,所以这非常糟糕。 我需要这个:

alert(data.post.1.id) // 2

1 个答案:

答案 0 :(得分:2)

简短回答:

如果不扩展jQuery的选择器,您可以使用jQuery的contains选择器:http://api.jquery.com/attribute-contains-selector/

喜欢这个

$('input[name*="["][name*="]"]')

将其翻译成英文,这意味着,向我提供名称中包含input[ ]


答案很长:

简短的回答应该是务实的。

但仅供参考......

[name...]的重复使用是因为一个缺点,我们不能在这样的选择器中使用通配符。

另一个缺点是他们没有定义严格的发生顺序。例如。名称post]1[也将匹配。

如果确实需要确保名称具有正确的字符串模式,则可以扩展jQuery的选择器以执行更严格的选择规则的正则表达式操作。

这是一个很好的:http://james.padolsey.com/javascript/regex-selector-for-jquery/