jQuery изменить тип ввода = текст на текстовое поле - PullRequest
4 голосов
/ 02 февраля 2012

У меня есть скрытое поле. После события сброса его необходимо преобразовать в «текстовое поле».

Это:

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

Производит

свойство не может быть изменено

ошибка

Этот метод: Изменить тип элемента со скрытого на ввод

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 ]

5 голосов
/ 02 февраля 2012

Поскольку 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();
1 голос
/ 02 февраля 2012

Проблема, с которой вы сталкиваетесь, заключается в том, что TextArea является элементом, а не атрибутом.

Вы должны удалить предыдущий элемент и заменить его новой текстовой областью с тем же именем:

 var myoldInput = $('#myInput');  
 var value = myoldInput.val();
 $("<textarea id='myInput'></textarea>").before(myoldInput).val(value);
 myoldInput.remove();
1 голос
/ 02 февраля 2012
$("<textarea>value</textarea").insertAfter($(parent).find('#excerpt'));
$(parent).find('input#excerpt').remove()
1 голос
/ 02 февраля 2012

Вы всегда можете удалить элемент, который хотите изменить, и добавить новый ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...