我有一个页面,它通过ajax动态地引入一个表单并将其显示在一个模态div中(一个位于覆盖整个页面的覆盖div之上)。这是为了让他们在窗口关闭之前保存某些数据。除了一件事,一切都很好。
$('#save_close_form').find('*[name]').each(function(index, form_element) {
var cfe = (form_element.jquery == undefined ? $(form_element) : form_element);
console.log(cfe.attr('name') + " => " + cfe.attr('value'));
if (cfe.attr('name').match(/data\[/)) {
if (cfe.attr('type') == 'checkbox') {
if (cfe.attr('checked')) {
map[cfe.attr('name')] = 'on';
}
else {
map[cfe.attr('name')] = '';
}
}
else if (cfe.attr('type') == 'radio') {
// only get checked radio buttons
if (cfe.attr('checked')) {
map[cfe.attr('name')] = cfe.attr('value');
}
}
else {
map[cfe.attr('name')] = cfe.attr('value');
}
}
});
最后的else {}子句中的部分触发了TextArea
和input type="text"
元素,但出于某种原因,cfe.attr('value');
始终将undefined
视为TextArea
{1}}。我正在使用FF6.0和jQuery 1.6。
答案 0 :(得分:13)
尝试使用.val()
代替.attr('value')
。
<textarea>
没有value
属性(文字位于代码之间,而不是value=""
),但我相信.val()
会检索它。
答案 1 :(得分:2)
对于textareas使用:
$("#textareaid").val() or $("#textareaid").html()
代替。
答案 2 :(得分:1)
TextArea没有名为value的属性...尝试使用val
map[cfe.attr('name')] = cfe.val();
答案 3 :(得分:1)
textarea
没有value
属性。您应该使用cfe.val()
或cfe.html()
来获取其内容。
答案 4 :(得分:0)
这是因为textarea没有值属性。
改为使用.val()
。
答案 5 :(得分:0)
好的,原因是jQuery 1.6区分了创建时的属性和当前的属性值。你创建了textarea而没有值属性的可能性超过了;因此,初始值为undefined
。如果要提取定义的值,则需要使用.prop('value')
,或调用更有用的.val()
方法。