3

名前は同じだが ID が異なるフォームがあります。array をシリアライズできますが、現在の ID を取得できません。

<form action="test.php" id="loginform" name="loginform" method="post">
     <input name="title[]" id="title1" type="text" value="" tabindex="1" />
     <input name="title[]" id="title2" type="text" value="" tabindex="2" />
     <input  name="title[]" id="title3" type="text" value="" tabindex="3" />
     <input type="submit" name="submit" value="Submit" id="submit" tabindex="4" />
 </form>

$('#loginform').bind('submit', function() { 
    var elements = $(this).serializeArray();
    $.each(elements, function(i, element) {
        var temp = $('#' + element['name']);
       var name = this.name; alert(name);
 var id = $(this).attr("id");alert(id); 
        (temp.val() == '') ? temp.css({'background': '#FFC4C4', 'border': '1px solid #F00'}) : temp.removeClass('hightlight');
    });
    return false;
});

私は名前を取得していますが、IDは取得していません。誰かこれを調べてもらえますか....

デモ

4

2 に答える 2

2

私はあなたの質問を理解していると思いますが、100%確実ではありません。私の理解が正しければ、入力を反復処理してそれぞれの ID 属性を取得しようとしています。

それだけの場合は、もっと簡単な方法があります。

$('#loginform').submit(function(ev) {
    $('input[type=text]', this).each(function(index, element) {
      alert($(element).attr('id'));
    });
    ev.preventDefault();
});

簡単な内訳:

  • まず、$('input[type=text]', this)送信するフォームからすべてのテキスト入力を取得します。
  • 次に、 を使用してそれらを反復処理します.each()
  • ごとelementに、 を使用.attr()して ID を取得し、それを に渡してalert()ユーザーに表示します。

更新されたデモ

于 2011-09-21T16:56:53.373 に答える
0

.serializeArray()各オブジェクトの名前と値のみを返します。したがって、コレクションを反復処理しても値は得られません。

.serializeArray()

一連のフォーム要素を名前と値の配列としてエンコードします。

于 2011-01-27T11:23:27.840 に答える