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(); 動作しません、それは「未定義」になります。

val();を使用して入力から値を取得できないjquery関数。未定義を与える:

$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 に答える