2012-07-10 61 views
0

我一直試圖圍繞這個特定問題我的頭兩天了。我覺得我很接近,但我無法破解它。我有一個div數據 - *屬性:使用jQuery填充表單文本輸入與data- *數據

<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"> 

當試圖提醒 - 例如 - 的「數據-PH-標題」的值,我可以做「PH」之間以下爲明顯的儀表板和「標題」被刪除。

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

這是偉大的,它的工作原理(提醒:「我是冠軍」),但我真正想要的是填充某些表單域所有這些數據。我有一個名爲我等同於信息對象的屬性的表單域,例如:

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

我試圖想出一個循環,就會把所有的信息對象的屬性值,將相應的文本輸入(或文字區域)。這是我陷入困境的地方。目前,我有以下代碼:

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

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

任何幫助將不勝感激!

+1

以何種方式,你被卡住?怎麼了?什麼不發生?你想要發生什麼? – lonesomeday 2012-07-10 22:06:01

+0

@NickJacob ['$ .each'](http://api.jquery.com/jQuery.each/) – lonesomeday 2012-07-10 22:08:40

+1

[你的代碼似乎工作,據我所知...](http:// jsfiddle.net/Vp9Gu/2/)唯一的問題是,在'#actions'中沒有一個名爲'data-ph-name'的屬性。 – lonesomeday 2012-07-10 22:13:13

回答

0

Your code works,所以我真的不知道問題是什麼,除了你沒有一個名爲'phName'的字段。

+0

我是個白癡。我忘了將它重命名爲phTitle。我現在可以將自己的頭部踢開。這裏的每個人似乎都注意到了,所以感謝所有人! – Wesley 2012-07-10 22:22:44

-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]; 
} 
+0

這似乎是你從錯誤的方向工作。 – 2012-07-10 22:16:58

+0

你是什麼意思?輸入是一個html輸入字段,您將值分配給信息中的內容。 – bokonic 2012-07-10 22:19:20

0

這應該是你所需要的。通過JSON對象迭代和填充文本區域:

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

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

這裏是一個jsFiddle演示它的工作。

+0

這是'$ .each'所做的。 – lonesomeday 2012-07-10 22:17:20

+0

我基於這個答案[答案](http://stackoverflow.com/questions/684672/loop-through-javascript-object)。 – 2012-07-10 22:22:56

+0

你的代碼沒有錯;只是OP的代碼是正確的:'$ .each'是一種使'for'構造更簡單的方法。 – lonesomeday 2012-07-10 22:24:54

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> 
...