質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

690閲覧

jqeuryでinputをtextareaに変更する方法

parapra

総合スコア14

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/02/05 10:32

jQueryでボタンをクリックした時に指定したinputをtextareaに変更することはできるのでしょうか?

jQuery

1 2$(document).on('click', '.btn1', function() { 3 4 $('#hennkou').html('<textarea></textarea>'); 5 6 7}); 8

HTML

1<button id="btn1">ボタン</button> 2 3<input id="hennkou">

上記のようなコードを試してはみたのですがうまくいかず困っています。
何かご教授いただければ幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

消して追加するのが一番早いと思います。

HTML

1<html lang="ja"> 2<head> 3<meta charset="utf-8"/> 4<script src="jquery-3.4.1.min.js"></script> 5<script> 6$(document).on('click', '#btn1', function() { 7 $('#hennkou').remove(); 8 $('#btn1').after('<textarea id="hennkou"></textarea>'); 9}); 10</script> 11</head> 12<body> 13 <button id="btn1">ボタン</button> 14 <input id="hennkou"> 15</body> 16</html>

投稿2020/02/05 10:52

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

parapra

2020/02/05 13:11

これだとボタンのところに追加されてしまいませんか?
yureighost

2020/02/05 13:20

afterなのでbutttonタグの次に追加されます。 ブラウザのデベロッパーツールでDOMの構成を見ながら動作させてもらえば、 inputと入れ替わって追加されるのがわかると思います。
parapra

2020/02/05 13:24

動作を確認したところ思っていた通りの動きをしてくれました。ありがとうございます。
guest

0

replaceWithメソッドを使うのがシンプルかと。

js

1$(document).on('click', '#btn1', function() { 2 $('#hennkou').replaceWith('<textarea id="hennkou"></textarea>'); 3});

html

1<button id="btn1">ボタン</button> 2<input id="hennkou">

ボタンをクリックするたびに、input と textarea が交互に切り替わる場合のコード例

js

1$(document).on('click', '#btn1', function() { 2 let tar = $("#hennkou"); 3 let tag = (tar.prop("tagName") === 'INPUT') ? 4 '<textarea id="hennkou"></textarea>' : '<input id="hennkou">'; 5 tar.replaceWith(tag); 6});

投稿2020/02/05 13:27

編集2020/02/05 13:47
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あまり生産的な処理だとは思えませんが一応こんなかんじで

投稿2020/02/05 10:44

yambejp

総合スコア114810

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/02/05 10:44

<script> $(function(){ $(document).on('click', '.btn1', function() { var html=$('#hennkou').prop('outerHTML'); var val=$('#hennkou').val(); html=html.replace(/^<.+?(?= |>)/,'<textarea'); $('#hennkou').prop('outerHTML',html); $('#hennkou').val(val); }); }); </script> <input type="text" value="hogehoge" id="hennkou"> <input type="button" class="btn1" value="btn">
yambejp

2020/02/05 10:55 編集

textareaからinputに戻す必要はないですよね? 属性をどこまで引き継ぎたいかによります
hatena19

2020/02/05 12:20

コードは回答のコードブロック内に記述したほうかいいと思います。
parapra

2020/02/05 13:10

すみません。戻す場合も教えていただけると助かります。
javahack

2020/02/05 14:21

> hatena19さん 多分ですが、teratailのバグで回答欄に書けなくなったのではないかと。 以前yambejpさんがそのような報告をされていたのを見たことがあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問