jQuery .attr('value')为文本区域返回undefined

时间:2011-08-24 18:47:50

标签: jquery undefined attr

我有一个页面,它通过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 {}子句中的部分触发了TextAreainput type="text"元素,但出于某种原因,cfe.attr('value');始终将undefined视为TextArea {1}}。我正在使用FF6.0和jQuery 1.6。

6 个答案:

答案 0 :(得分:13)

尝试使用.val()代替.attr('value')

<textarea>没有value属性(文字位于代码之间,而不是value=""),但我相信.val()会检索它。

答案 1 :(得分:2)

对于textareas使用:

 $("#textareaid").val() or $("#textareaid").html()

代替。

jQuery get textarea text

Set value of textarea in jQuery

答案 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()方法。