我一直试图围绕这个特殊问题两天。我觉得我很亲密,但我无法破解它。我有一个带有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>
我正在尝试建立一个循环,将所有info对象的属性值放入相应的文本输入(或textareas)。这是我陷入困境的地方。我目前有以下代码:
var info = $("#actions").data();
$.each(info, function(field, val){
$("[name='" + field + "']").val(val);
});
非常感谢任何帮助!
答案 0 :(得分:0)
这应该是你需要的。迭代JSON对象并填充文本区域:
var info = $("#actions").data();
for (var key in info) {
if (info.hasOwnProperty(key)) {
$("[name='" + key + "']").val(info[key]);
}
}
以下是展示其有效的jsFiddle。
答案 1 :(得分:0)
Your code works,所以我真的不知道问题是什么,除了你没有名为'phName'的字段。
答案 2 :(得分: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>
...
答案 3 :(得分:-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];
}