1

假设我有这种形式:

    <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();

我可以收到她的价值。但是,如果我有一个输入数组,这就是我的情况,因为我可以复制表单的字段,我如何从以下输入中获取多个值?

<input type='text' name='field[0][a]' id='field[0][a]'>
<input type='text' name='field[0][b]' id='field[0][b]'>

var v = $('#field[iterator][a]').val(); 不起作用,它会导致“未定义”。

jquery 函数,我无法使用 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);
            }       
        });
    });
4

4 回答 4

3

jQuery选择器中使用了方括号,我们应该使用转义字符将方括号包含在控件的id中;

现场演示

iterator = 0;
$('#field\\['+iterator +'\\]\\[a\\]').val();​
于 2012-07-12T17:32:36.413 回答
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();
于 2012-07-12T17:32:32.170 回答
1

字符“[”在 jquery 选择器中不是中性的:

$('#field[0][a]')意思是:“选择id为“field”的项目,还有一个名为'0'的属性和另一个名为'a'的属性“

你可以 :

  • 要么改变你的方式来为你的字段提供一个 id,比如 : id="field_0_a",因此可以$('#field_0_a')正常工作,
  • 或按名称选择您的项目:$('[name="field[0][a]"]')
  • 或者像阿迪尔说的那样做
于 2012-07-12T17:42:52.007 回答
0

问题是您必须转义如下特殊字符:

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

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

于 2012-07-12T17:40:01.353 回答