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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

2回答

1468閲覧

セレクトしたオプションを追加で違うボックスに表示するUI

pegy

総合スコア243

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2017/05/14 23:38

編集2017/05/15 02:07

2つのボックスがあり、間に追加、削除のようなボタンがあり、左を選択した状態で追加をおせば右に追加され、右を選択した状態で削除を、おせば消えるようなものを実装したいと考えております。
表現がむずかしいのですが、エクセルでリボンを設定するような操作です。

選択、追加、削除、jqueryのような検索でもうまく見つけることができなかったのですが、端的な方法や有用なサイトがあればご教示願いたく存じます。
宜しくお願い致します。

【加筆】
ご指摘を頂きましたので、イメージとなるコードを記載させて頂きます。
selectを使用していますが、そもそもselectを使うべきかやjqueryを使うべきかも不明なため
的外れであれば、またご指摘を頂ければ幸いです。

イメージとしては、下記のHTMLでbox1で複数選択した状態のものをbutton1を押せば、box2の要素のoptionがapendされ
反対にbox2で複数選択した状態のものをbutton2を押せばbox2の要素のからoptionが削除されるようなものとなります。

私のJS(Jquery)の知識では例えば、box1のoptionをクリックというイベントを通じて、
box2にoptionを追加したりすることはできるのですが、
1)複数の要素を選択した状態のものを変数に格納しておき、2)buttonをクリックするというイベントを通じてapendする
という2段階の方法に迷っています。
特に1)の場合、複数選択している状態というのをjquery上どのように検知する方法があるのかというのを探しております。

HTML

1 2 <select name="entity1" id="box1" multiple> 3 <option value="a">a</option> 4 <option value="b">b</option> 5 <option value="c">c</option> 6 </select> 7 8<button type="button" name="button" id="botton1">追加</button> 9<button type="button" name="button" id="botton2">削除</button> 10 11 <select name="entity2" id="box2" multiple> 12 </select> 13

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

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

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

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

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

yambejp

2017/05/15 00:27

ボックスの定義があいまいです。具体的なHTMLソースを書いて、どういう結果出力を期待しているかかくべき
pegy

2017/05/15 02:07

コメントありがとうございます。加筆をさせて頂きました。
yambejp

2017/05/15 02:18

box1から追加したoptionは2重登録していいのでしょうか?一度aを追加後再度aを追加できるか?追加作業によりboxのoptionの並びは追加した順でよいのでしょうか?それともbox1の並びが優先なのでしょうか?
guest

回答2

0

ベストアンサー

仕様があやふやですが、ざっと書きます

javascript

1<script> 2document.addEventListener('click',function(e){ 3 var t=e.target; 4 var box1=document.getElementById('box1'); 5 var box2=document.getElementById('box2'); 6 var opts1=box1.options; 7 var opts2=box2.options; 8 if(t.id=="botton1"){ 9 for(var i=0;i<opts1.length;i++){ 10 if(opts1[i].selected){ 11 var opt=document.createElement('option'); 12 opt.setAttribute("value",opts1[i].getAttribute("value")); 13 opt.appendChild(document.createTextNode(opts1[i].textContent)); 14 box2.appendChild(opt); 15 } 16 } 17 } 18 if(t.id=="botton2"){ 19 for(var i=opts2.length-1;i>=0;i--){ 20 if(opts2[i].selected){ 21 box2.removeChild(opts2[i]); 22 } 23 } 24 } 25}); 26</script> 27 28<select name="entity1" id="box1" multiple> 29<option value="a">a</option> 30<option value="b">b</option> 31<option value="c">c</option> 32</select> 33 34<button type="button" name="button" id="botton1">追加</button> 35<button type="button" name="button" id="botton2">削除</button> 36 37<select name="entity2" id="box2" multiple> 38</select>

追記

一応jQuery版追記しておきます。さすがにスッキリ書けますね

$(function(){ $('#botton1').on('click',function(){ $('#box1 option:selected').clone().appendTo('#box2'); }); $('#botton2').on('click',function(){ $('#box2 option:selected').remove(); }); });

投稿2017/05/15 02:30

編集2017/05/15 02:43
yambejp

総合スコア114843

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

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

yambejp

2017/05/15 02:45

一応例示の通りidはbuttonではなくbottonにしてありますが、必要に応じて読み替えて下さい
pegy

2017/05/15 03:29

コメントまことに有難うございます。細かい仕様まで記載してしまえば、論点が曖昧になってしまうかと考えたため、端的な目的だけを記載したのですが、反対にお手間をかけてしまい申し訳ございません。 おそらく今回私にとってもっとも大きな気づきになったのはoptionがselected属性をとることが可能なため、イベントはbutton側だけで設定すれば足りるということでした。 ご記載頂いた、JS及びJqueryのコードでそれがよく分かりましたので大変助かりました。 また、ご丁寧にsampleまで記載をいただけたことを改めて御礼申し上げます。 宜しくお願い申し上げます。
guest

0

ボックスとはリスト形式のセレクトボックスで問題ないでしょうか。

問題なければ、
追加:
1.セレクトボックス(左)のvalueと表示値を取得
2.セレクトボックス(右)に、1で取得したvalueと表示値を設定した、optionタグを追加

削除:
1.セレクトボックス(右)で選択状態になっているoptionタグを削除

セレクトボックスの操作方法は調べればわんさか出てくると思います。

投稿2017/05/15 00:12

moredeep

総合スコア1507

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

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

pegy

2017/05/15 02:08

ご回答ありがとうございます。 私の調べ方が良くなかったのかもしれません。buttonで追加削除するのを介在するケースをうまく見つけることができませんでした。もう一度検索してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問