2012-07-10 46 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> 
...