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

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

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

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1370閲覧

react クリックでselectを開く

cheche0830

総合スコア187

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/06/28 04:23

<button onClick={this.click.bind(this)}>btn</button> <select className={theme.timePulldownList__select} ref="timePulldownList"> <option>9:00</option> <option>9:15</option> </select> click = () => { this.refs.timePulldownList.onfocus(); }

上記では動きませんが、
buttonをクリックすると、selectメニューが開く挙動を
reactにて実装したいのですが可能でしょうか?

ご教授お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

実際にサンプルを作ってみたわけではないですが、以下の(1)(2)を参考にすると、
とりあえず、それらしく動きそうなものを作れるのでは?と思った参考ページを
回答します。

(1) ボタンをクリックしたときに select を開くサンプル

  • Open select programmatically

 http://fiddlesalad.com/javascript/open-select-programmatically/

上記は JQuery を使っていますが、同じことをReactでやればいいという目処がつきます。

※ちなみに私の使用しているブラウザ(Mac版Chrome 67)では、開くのと閉じるのがうまく動いたのは
「Generic」ボタンのみでした。

(2) Reactである要素にfocusするサンプル

上記 (1)の「Generic」ボタンのクリックでやっている

javascript

1$("#c").on("click", function(evt) { 2 if ($("#s").attr("size") == 6) { 3 $("#s").attr("size", 1); 4 } else { 5 $("#s").attr("size", 6); 6 $("#s").focus(); 7 }

をReactでやってみるとすれば、上記は、select のsize属性に1だったり、6だったりの値を
設定することで開閉しており、これについては Reactではselect がrenderされるときに
size属性を適切に与えればよいとして、もう一点、focus() でフォーカスを当てるほうは、
以下が参考になります。

  • React set focus on input after render

https://stackoverflow.com/questions/28889826/

冒頭書いたように、試しに作ってみたわけではないので、「これで出来ました」とは
言えないのですが、参考になれば幸いです。

投稿2018/06/28 05:57

編集2018/06/28 05:58
jun68ykt

総合スコア9058

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

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

cheche0830

2018/06/28 06:03

いえいえ、ありがとうございます! 取っ掛かりだけほしかったので大変助かりました!やってみます!
jun68ykt

2018/06/28 09:10 編集

こんにちは。 >大変助かりました! とのことでよかったです。 以下補足です。 http://fiddlesalad.com/javascript/open-select-programmatically/ の Generic ボタンの方法でも、実際に <select > の右端に表示される、∧ または ∨ を クリックしたときに開く状態と同じ状態になるわけではなくちょっとカッコ悪いですね。 Is there a way to select an open select box in css? https://stackoverflow.com/questions/32693560/ の回答にも It's not possible to detect if a HTML select element is opened using CSS, or even javascript. というのがあるので、標準の select で、プログラムから選択肢が表示される 状態にするのは難しいかもしれません。 代替案として、 material UI の Select https://material-ui.com/demos/selects/ だと、 https://material-ui.com/api/select/ の中に open という props がありますが、これに true を指定して <Select open={true} value= ... > とすると、選択肢が表示された状態でrenderされます。 https://codesandbox.io/s/k63wjqk93 のソース demo.js の中のどれかの <Select> に open={true} を追加すると確認できます。 ただし、open={true} を追加するだけでは、開閉時にエラーになりますので、 これに対応したのが以下の一番左上の Select です。 https://codesandbox.io/s/9z626o021w 上記の手を加えたもののように、 state に持ったフラグで <Select >の開閉状態を制御できるので、 何らかのボタンをクリックしたときに、このフラグを true にすれば よいかと思います。 以上参考まで
cheche0830

2018/06/28 16:38

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問