2012-07-12 97 views
1

比方說,我有這樣的形式:獲得陣列的價值與jQuery

<form method="post" name="b" > 
<table> 
    <tr> 
     <td>Field A</td> 
     <td><input type='text' name='field[0][a]' id='field[0][a]'></td> 
     <td>Field B</td> 
     <td><textarea name='field[0][b]' id='field[0][b]'></textarea></td> 
     <td><button>remove</button></td> 
    </tr> 
</table> 
</div> 
<div id="container"></div> 
<button id="mybutton">add form</button> 

<div align="center"> 
<p><button onClick="dadosFormulario()" value="Registar" name="registar">Registo</button></p> 
</div> 
</form> 

和我有重複輸入我有當我點擊「添加格式」按鈕jquery的功能。所以,關於這一點,我試圖用jquery的.val()方法保存輸入的值。

所以,如果我有這樣一個輸入:

<input type='text' name='teste' id='teste'> 

我知道這一點:

var v = $('#teste').val(); 

我可以接受她的價值。但是,如果我有一組輸入,並且這是我的情況,因爲我可以複製表單的字段,我如何從以下輸入中獲取多個值? ('#field [iterator] [a]')。val(); var();};將不起作用,導致「未定義」。我不能從val()中獲取輸入的值,給未定義:

$countForms = 1; 

    (function($){ 

      $.fn.addForms = function(idform){ 

         var myform = "<table>"+ 
         " <tr>"+ 
         "  <td>Field A ("+$countForms+"):</td>"+ 
         "  <td><input type='text' name='field\\["+$countForms+"\\]\\[a\\]'></td>"+ 
         "  <td>Field B ("+$countForms+"):</td>"+ 
         "  <td><textarea name='field["+$countForms+"]['b']'></textarea></td>"+ 
         "  <td><button>remove</button></td>"+ 
         " </tr>"+ 
         "</table>"; 


         if(idform=='mybutton'){ 

          myform = $(myform); 
          $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); }); 
          $(this).append(myform); 
          $countForms++; 
         } 


      }; 
    })(jQuery); 

    $(function(){ 
     $("#mybutton").bind("click", function(e){ 
     e.preventDefault(); 
     var idform=this.id; 

      if($countForms<3){ 
       $("#container").addForms(idform); 
      }  
     }); 
    }); 

回答

3

廣場在jQuery選擇器中使用括號,我們應該使用轉義字符在控件的id中包含方括號;

Live Demo

iterator = 0; 
$('#field\\['+iterator +'\\]\\[a\\]').val();​ 
+0

謝謝,像一個魅力工作:P – user1511579 2012-07-12 17:42:54

+0

不客氣。 – Adil 2012-07-12 17:44:30

+0

還有一件事,關於我通過jquery生成的輸入? 我不能像這樣宣佈他們? ? – user1511579 2012-07-12 17:45:34

1

添加一個類來投入和做

jQuery(document).ready(function($){ 
    $('.inputs').each(function(index, object){ 
    console.log($(object).val()); 
    }); 
}); 

在你的代碼,你需要改變位置:

var v = $('#field[iterator][a]').val(); 

到:

var v = $('#field\\['+iterator+'\\]\\[a\\]').val(); 
+0

已經解決了GTSouza,無論如何謝謝你:P – user1511579 2012-07-12 17:43:21

+0

不客氣。 – GTSouza 2012-07-12 17:52:26

+0

我有一個類似的問題,但jQuery的功能我張貼在主帖的結尾,如果你能幫助我將不勝感激。 謝謝。 – user1511579 2012-07-12 17:54:28

0

的問題是,你必須轉義特殊字符如下所示:

$('[id="field[' + iterator + '][b]"]').val();

$('#field\\[' + iterator + '\\]\\[b\\]').val();
demo

+0

已經解決了裏卡多,無論如何,謝謝你:P – user1511579 2012-07-12 17:45:59

1

的characte R「[」不是中立在jQuery選擇:

$('#field[0][a]')意思是:「選擇具有ID的項目‘場’,並且還具有命名爲‘0’的屬性,並命名爲‘A’的另一個屬性」

您可以:

  • 要麼改變自己的方式給一個id你的領域,如:id="field_0_a",因而具有正確$('#field_0_a')工作,
  • 或選擇項目按名稱:$('[name="field[0][a]"]')
  • 還是喜歡Adil說的
+0

LeGec我很喜歡Adil所說的,它適用於html代碼中的輸入。 但是,就像我說的,我有另一個問題與其他jquery函數中生成的輸入有關(我將把函數添加到主文章中)。 我有他們這樣宣佈但它給出了undefined作爲結果 – user1511579 2012-07-12 17:50:31

+0

不知道,已解決 – user1511579 2012-07-12 18:03:26