2013-04-24 43 views
0

文本输入具有数组样式的名称(name =“post [2] [id]”)。我需要用这个结构名称在jQuery脚本中获取这个值。这样我可以像普通数组一样工作。与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 
+0

不知道你在寻求什么帮助... – adamb 2013-04-24 17:27:48

回答

2

简短的回答:

不延长jQuery的选择,你可以使用jQuery的contains选择的:http://api.jquery.com/attribute-contains-selector/

喜欢这个

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

翻译它英文,意思是,给我th Ëinput s其中名称中包含[]


龙答:

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

但FYI ...

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

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

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

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