2012-07-12 63 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