【问题标题】:jQuery change input type=text to textareajQuery将输入类型=文本更改为文本区域
【发布时间】:2023-03-19 05:20:01
【问题描述】:

我有一个隐藏字段。在放置事件之后,它需要转换为“textarea”。

这个:

      excerpt = $(parent).find('#excerpt').attr('type', 'textarea');
      excerpt.val('textarea');

产生

属性无法更改

错误

这个方法: Change element type from hidden to input

marker = $('<span />').insertBefore('#myInput');
$('#myInput').detach().attr('type', 'textarea').insertAfter(marker);
marker.remove();

不使用 'textarea' ,但仅适用于 'text'。添加:

.val('HERE')

到:

$('#myInput').detach().attr('type', 'textarea').val('HERE').insertAfter(marker);

line 确实会导致文本框的值发生变化,因此选择器正在工作并且 &lt;span&gt; 元素正在被正确插入和删除。

这是一个无法克服的安全问题吗?或者有没有办法做到这一点?

【问题讨论】:

    标签: jquery forms input


    【解决方案1】:

    因为textarea 是与input 完全不同的元素,所以只需创建一个新的textarea 并删除input 就更容易了。试试这个:

    $input = $("#myHiddenInput")
    $textarea = $("<textarea></textarea>").attr({
        id: $input.prop('id'),
        name: $input.prop('name'),
        value: $input.val()
    });
    $input.after($textarea).remove();
    

    【讨论】:

    • 作为记录,您将 id 和 name 传递给新 textarea 的方式将不起作用。应该是id: input.attr("id")name: input.attr("name")
    【解决方案2】:

    您始终可以删除要更改的元素并添加新元素...

    【讨论】:

      【解决方案3】:

      您面临的问题是 TextArea 是一个元素而不是一个属性。

      您应该删除前一个元素并替换为同名的新文本区域:

       var myoldInput = $('#myInput');  
       var value = myoldInput.val();
       $("<textarea id='myInput'></textarea>").before(myoldInput).val(value);
       myoldInput.remove();
      

      【讨论】:

        【解决方案4】:
        $("<textarea>value</textarea").insertAfter($(parent).find('#excerpt'));
        $(parent).find('input#excerpt').remove()
        

        【讨论】:

          猜你喜欢
          • 2010-12-09
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 1970-01-01
          • 2014-12-10
          • 2016-02-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多