jQuery将input type = text更改为textarea

时间:2012-02-02 12:35:53

标签: jquery forms input

我有一个隐藏的领域。在下降事件之后,它需要转换为'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);

行确实会导致文本框的值发生变化,因此选择器正在工作,并且正在插入和删除<span>元素。

这是一个不可逾越的安全问题吗?或者有办法吗?

4 个答案:

答案 0 :(得分:5)

由于textareainput完全不同,因此更容易创建新的textarea并移除input。试试这个:

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您遇到的问题是TextArea是一个元素而不是属性。

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

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

答案 3 :(得分:1)

$("<textarea>value</textarea").insertAfter($(parent).find('#excerpt'));
$(parent).find('input#excerpt').remove()