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

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

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

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

jQuery

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

Q&A

解決済

1回答

2464閲覧

jQueryによって、複数選択リストでCTRLキーを使わなくても複数選択できるようにした際、リストの表示位置を選択した場所に固定したい

tetakaha759

総合スコア22

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2022/02/23 02:42

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
長くなってしまったタイトルの通りですが、複数選択リストでCTRLキーを使わなくても複数選択できるようにした際、リストの表示位置を選択した場所に固定したいと考えています。

発生している問題・エラーメッセージ

下記のjQueryコードで、複数選択リストでCTRLキーを使わなくても複数選択できるようにはなったのですが、リストをスクロールして下の方のリストを選択すると、必ずリストの表示位置が先頭に戻ってしまいます。

下記のjQueryコードをコメントアウトすると、通常通りの動きになってCTRLキーが必要になりますが、選択してもリストの表示位置は変わりません。

該当のソースコード

HTML

1<select id="multi" class="form-control" name="dummy" multiple="multiple" > 2 <option value="1">1</option> 3 ... 4 <option value="100">100</option> 5</select>

jQuery

1$(document).on ('mousedown', "#multi option", (event) => { 2 event.preventDefault(); 3 4 $(event.currentTarget).toggleClass ('selected'); 5 $(event.currentTarget).prop ('selected', 6 !$(event.currentTarget).prop ('selected')); 7 return false; 8});

試したこと

「 $(event.currentTarget).focus();」として、イベント発生源となったオプションをフォーカスしてみましたが、変化はありませんでした。
CTRLキー無しで選択後に、元のリストの位置に留めておく方法をご存じな方がいらっしゃったら、ご協力いただけませんでしょうか。

補足情報(FW/ツールのバージョンなど)

jQuery 3.4.1
chrome 98.0.4758.102

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

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

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

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

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

guest

回答1

0

ベストアンサー

multipleなselectでctrlをつかわないとなると何かを諦める必要があります
select風なチェックボックスにするなど工夫してみてください

置き換え例

HTML

1<style> 2.select { 3display:flex; 4flex-direction : column; 5padding:0; 6height:5em; 7overflow-y:scroll; 8width:100px; 9border:1px solid gray; 10} 11.select [type=checkbox] ~ span{ 12display:inline-block; 13} 14.select [type=checkbox]:checked ~ span{ 15background-Color:red; 16} 17.select [type=checkbox]{ 18display:none; 19} 20.select span{ 21font-size:0.8em; 22list-style:none; 23width:100%; 24} 25li{height:1em;} 26</style> 27<form> 28<select name="ch[]" multiple> 29<option value="1">1</option> 30<option value="2">2</option> 31<option value="3">3</option> 32<option value="4">4</option> 33<option value="5">5</option> 34<option value="6">6</option> 35</select> 36<input type="submit" value="send"> 37</form> 38<form> 39<ul class="select"> 40<li><label><input type="checkbox" name="ch[]" value="1"><span>1</span></label> 41<li><label><input type="checkbox" name="ch[]" value="2"><span>2</span></label> 42<li><label><input type="checkbox" name="ch[]" value="3"><span>3</span></label> 43<li><label><input type="checkbox" name="ch[]" value="4"><span>4</span></label> 44<li><label><input type="checkbox" name="ch[]" value="5"><span>5</span></label> 45<li><label><input type="checkbox" name="ch[]" value="6"><span>6</span></label> 46</ul> 47<input type="submit" value="send"> 48</form> 49

投稿2022/02/24 00:36

編集2022/02/24 01:03
yambejp

総合スコア117755

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

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

tetakaha759

2022/02/24 21:42

複数選択可能なリストボックスで、CTRLキーを使わないようにするのは難しいとのこと、ご回答ありがとうございました。 ご教示いただいたコードを参考に、別の手立てを考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問