2011-06-09 25 views
2

我有這樣的投入與非數字的指標與jQuery數組的索引:jQuery的獲得的非數字指標的輸入

<input name="attributes['index1']" class="text_inputs" /> 
<input name="attributes['index2']" class="text_inputs" /> 
<input name="attributes['index3']" class="text_inputs" /> 

這jQuery代碼:

var attrs = new Array(); 
$.map($('input.text_inputs'), function(obj, idx) { 
    attrs['here_the_index_from_input'] = obj.value; 
}); 

所以我想將輸入中的每個索引添加到attrs數組索引。 在此先感謝!

+0

不' 'here_the_index_from_input''意味着,例如,'' index1'',' 'index2''和'' index3''? – 2011-06-09 14:44:04

回答

0
var attrs = []; 
    $.each($('input.text_inputs'), function(){ 
     attrs[$(this).attr('nameOfIndexAttribute')] = $(this).val(); 
    }); 
0

你可以這樣來做(如果我unerstood正確你想要的)

var attrs = {}; 
$.map($('input.text_inputs'), function(obj, idx) { 
    attrs[obj.name] = obj.value; 
}); 

attrs是一個關聯數組與輸入字段作爲鍵的名稱及輸入的值字段作爲值。

編輯 - 使用作爲評論正確地指出的對象,而不是一個數組

+0

var attrs = {};'或'var attrs = new Object();'*** Not ***'var attrs = new Array();'。數組僅用於數字指標。僅僅因爲你可以在特定屬性上使用它並不意味着你應該這樣做。 – 2011-06-09 14:49:42

+0

你說得對。我將編輯答案並記住這一點!我想展示的是如何使用obj.name來獲取輸入的名稱。 – 2011-06-09 15:34:54

3

你混了一堆不同的概念。

  • 您特別提到了「非數字索引」,這意味着您根本不應該使用數組。
  • 如果您不打算使用由map返回的數組,請改爲使用each
  • 如果您已經有jQuery集合,則不需要使用$.func表單。只需使用.func即可。

    var attrs = {}; 
    $('input.text_inputs').each(function() 
    { 
        var $this = $(this), 
         name = $this.prop('name'), 
         val = $this.val(); 
    
        name = name.replace(/^attributes\['|'\]$/g, ''); 
    
        attrs[name] = val; 
    }); 
    

我認爲通過'here_the_index_from_input'你的意思是,例如,'index1''index2''index3'

演示:http://jsfiddle.net/mattball/t2hX5/