【问题标题】:jQuery .attr('value') returns undefined for text areajQuery .attr('value') 为文本区域返回未定义
【发布时间】:2011-11-03 02:02:49
【问题描述】:

我有一个页面,它通过 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'); 视为undefinedTextArea。我为此使用 FF6.0 和 jQuery 1.6。

【问题讨论】:

  • 你为什么不使用cfe.val()
  • 在此代码的先前版本中,我尝试过,但它从未奏效。奇怪的是,直到最近我将 JQ 从 1.3 升级到 1.6 时,上面的代码都可以正常工作

标签: jquery undefined attr


【解决方案1】:

尝试.val() 而不是.attr('value')

<textarea> 没有value 属性(文本在标签之间,不在value="" 中)但是我相信.val() 会检索到它。

【讨论】:

  • 我猜他们在 1.6 中修复了 .val() 在 textareas 中的工作方式,因为它现在似乎可以使用它。奇怪的是 .attr('value') 直到现在都运行良好。
【解决方案2】:

对于文本区域使用:

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

改为。

jQuery get textarea text

Set value of textarea in jQuery

【讨论】:

  • .html() 将获取 textarea 开始的值,.val() 将获取当前值。
【解决方案3】:

TextArea 没有名为 value 的属性...尝试使用 val

map[cfe.attr('name')] = cfe.val();

【讨论】:

    【解决方案4】:

    textarea 默认没有value 属性。您应该使用cfe.val()cfe.html() 来获取其内容。

    【讨论】:

      【解决方案5】:

      这是因为 textarea 没有 value 属性。

      请改用.val()

      【讨论】:

        【解决方案6】:

        好的,原因是 jQuery 1.6 区分了创建时的属性和您当前的属性值。您创建的 textarea 很可能没有 value 属性;因此,初始值为undefined。当你想拉取定义的值时,你需要要么使用.prop('value'),要么调用更有用的.val()方法。

        【讨论】:

          猜你喜欢
          • 2014-01-19
          • 1970-01-01
          • 2015-09-06
          • 1970-01-01
          • 2012-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多