0

私は2日間、この特定の問題に頭を悩ませようとしています。近くにいるような気がしますが、割れるわけではありません。data- *属性を持つdivがあります:

    <div class="pull-right" id="actions" data-ph-title="I am a title" data-ph-type="and a type" data-ph-source="from a source" data-ph-subject="with a subject">

たとえば、「data-ph-title」の値を警告しようとすると、「ph」と「title」の間のダッシュが削除されるため、次のことができます。

    var info = $("#actions").data();
    alert(info.phTitle);

これはすばらしいことであり、機能します(アラート:「私はタイトルです」)が、私が本当に望んでいるのは、特定のフォームフィールドにこのすべてのデータを入力することです。フォームフィールドにinfoオブジェクトのプロパティと同じ名前を付けました。次に例を示します。

    <textarea id="placeholder-title" name="phName"></textarea>

情報オブジェクトのすべてのプロパティ値を対応するテキスト入力(またはtextareas)に配置するループを考え出そうとしています。これは私が立ち往生しているところです。私は現在次のコードを持っています:

    var info = $("#actions").data();

    $.each(info, function(field, val){
        $("[name='" + field + "']").val(val);
    });

どんな助けでも大歓迎です!

4

4 に答える 4

0

あなたのコードは機能するので、「phName」という名前のフィールドがないことを除けば、問題が何であるかはよくわかりません。

于 2012-07-10T22:17:09.783 に答える
0

#actionsにphNameが含まれていないようです。しかし、フォーム要素でIDを使用するのはどうですか?

var info = $("#actions").data();

$.each(info, function(field, val){
    $("#placeholder-" + field).val(val);
});

<textarea id="placeholder-phTitle"></textarea>
<textarea id="placeholder-phSource"></textarea>
...
于 2012-07-10T22:18:24.190 に答える
0

これはあなたが必要とするものでなければなりません。JSONオブジェクトを繰り返し処理し、テキスト領域にデータを入力します。

var info = $("#actions").data();

for (var key in info) {
  if (info.hasOwnProperty(key)) {
    $("[name='" + key + "']").val(info[key]);
  }
}

これは、それが機能することを示すjsFiddleです。

于 2012-07-10T22:16:29.567 に答える
-1

これを試して:

var fields = $('#myform input, #myform textarea');
for(var i=0; i < fields.length; i++){
   var input = fields[i];
   if(info[input.name]) input.value = info[input.name];
}
于 2012-07-10T22:06:12.490 に答える