2012-02-02 13 views
4

私は隠しフィールドを持っています。ドロップイベントの後、それは 'テキストエリア'に変換する必要があります。jQueryの非表示の入力タイプをテキストエリアに変更

これ:

Change element type from hidden to input

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

性が

エラー

この方法を変更することはできません生成し

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

'テキストエリア' を使用して何もしませんが、ちょうど「text'.Addingのために働く:へ

.val('HERE') 

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

行がテキストの値になるんボックスが変更されているため、セレクタが機能し、<span>要素が正しく挿入され、削除されています。

これは克服できないセキュリティ上の問題ですか?またはそれを行う方法はありますか?

答えて

5

新しいtextareaを削除し、inputを削除してください。このお試しください:記録のために

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

を、あなたは新しいテキストエリアへのIDと名前を渡されてきた方法では動作しません。これは 'id:input.attr(" id ")'と 'name:input.attr(" name ")'でなければなりません。 – Heraldmonkey

+0

@Heraldmonkeyありがとうございます。どのように私はそれを逃したか分からない。 –

1

あなたはいつもあなたが変更し、新しいものを追加したい要素を削除することができます...

1

あなたが直面している問題は、TextAreaの要素ではない属性であるということです。

あなたは前の要素を削除し、同じ名前の新しいテキスト領域に置き換えることになります。textareaは完全に別の要素がinputそれは単に作成する方が簡単ですしているので

var myoldInput = $('#myInput'); 
var value = myoldInput.val(); 
$("<textarea id='myInput'></textarea>").before(myoldInput).val(value); 
myoldInput.remove(); 
1
$("<textarea>value</textarea").insertAfter($(parent).find('#excerpt')); 
$(parent).find('input#excerpt').remove() 
関連する問題