0

同じclaを持つ複数の入力フィールドを使用してJSON文字列を作成したいと思います。説明のために私のHTMLを表示させてください

<div>
    Email:<input title="QA" type="text" class="email">
    Name: <input type="text" class="name">
</div>

<div>
    Email:<input title="DEV" type="text" class="email">
    Name: <input type="text" class="name">
</div>

<div>
    Email:<input title="PROD" type="text" class="email">
    Name: <input type="text" class="name">
</div>

現在、私のJavaScriptは次のとおりです。

 var ServerUser = [];

 $("input[class=email]").each(function() {
    var id = $(this).attr("title");
    var email = $(this).val();

    tmp = {};
    tmp['id '] = id;
    tmp['email '] = email;

    ServerUser.push(tmp);
 });

しかし、それが次の結果を生み出すもの

[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]

私がやりたいことは次のとおりです

[{title: QA, email: 'a@a.com', name: 'Paul'}, {title: PROD, email: 'b@b.com', name: 'Mark'},{title: DEV, email: 'c@c.com', name: 'Mike'}]

名前の値は、それぞれの名前入力フィールドから取得されます。

この問題にどのようにアプローチしますか?あなたの助けとこれを読んでくれてありがとう。

よろしく。

4

3 に答える 3

5
var inputs = $('input.email'), tmp;
$.each(inputs, function(i, obj) {
  tmp = {
    'title': $(obj).attr('title'),
    'email': $(obj).val(),
    'name' : $(obj).siblings('.name').val()
  };

  ServerUser.push(tmp);
});

それはそれを行う必要があります

于 2013-02-21T19:34:18.017 に答える
0

入力フィールドには、値を取得するために使用できる解読可能な一意の識別子が必要なため、これはプログラミングの実践としては不適切ですが、例では、次の兄弟セレクターを使用すると、div の次の入力要素を選択できます。

例:

 var ServerUser = [];
    $("input[class=email]").each(function() {

    var id = $(this).attr("title");
    var email = $(this).val();
    var name = $(this).parent().first().find('input:last').val();

    tmp = {};
    tmp['TaskID'] = id;
    tmp['ClientEmail'] = email;
    tmp['ClientName'] = name;

    ServerUser.push(tmp);
 });

これは長いセレクターであり、これを行う必要がないようにフォームを構造化するためのより良い方法がある可能性がありますが、名前入力が最後のものである限り、これは機能します。

于 2013-02-21T19:59:34.267 に答える
0

事前に記述された文字列に変数を挿入して手動で行わないのはなぜですか?

それぞれのタイトルで入力の名前を変更します。

例:

var onejson = "[{title: QA , email: emailQA , name: nameQA }, {title: DEV , email: emailDEV , name: nameDEV }, {title: PRO , email: emailPRO , name: namePRO }];

ちょっとした回避策であることはわかっていますが、それは悪い解決策ではないと思います。説明したように実行します。希望が役立ちます。

于 2013-02-21T19:35:33.293 に答える