Reactで開発をしています。
<input />や<Select />の中身が空(何も書かれていない)だったら<input type="submit" value="検索" />で定義されたボタンが押せないようにしたいです。
イメージとしては何も書いてなかったら、ボタンが灰色っぽくなって押せなくて、すべての項目が埋まっていればボタンの色が変わって押せるようになる感じです。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
こんにちは
以下のようなコンポーネントを作ればよいかと思います。
<input>
から入力される値や<select>
で選ばれる値を state に持つようにする。- stateに保持されている入力値のいずれかが無効な値(=空文字列など)であるときにボタンを押せないようにする。
- ボタンを押せないようにする簡単な方法は
disabled
に true を渡せばよい。
以下は上記の簡単なサンプルです。
jsx
1class App extends React.Component { 2 constructor(props) { 3 super(props); 4 this.state = { 5 word: "", 6 size: "" 7 }; 8 } 9 10 changeValue = e => { 11 this.setState({ [e.target.name]: e.target.value }); 12 }; 13 14 buttonClick = () => { 15 alert(JSON.stringify(this.state)); 16 }; 17 18 render() { 19 return ( 20 <div className="container"> 21 <p> 22 <span>検索ワード:</span> 23 <input name="word" onChange={this.changeValue} className="word" /> 24 </p> 25 <p> 26 <span>サイズ:</span> 27 <select name="size" onChange={this.changeValue} className="size"> 28 <option value=""></option> 29 <option value="large">大</option> 30 <option value="medium">中</option> 31 <option value="small">小</option> 32 </select> 33 </p> 34 <br /> 35 <p> 36 <input 37 type="submit" 38 value="検索" 39 onClick={this.buttonClick} 40 disabled={!this.state.word || !this.state.size} 41 className="button" 42 /> 43 </p> 44 </div> 45 ); 46 } 47} 48
上記を動作確認するため、jsFiddle にも上げています。
このサンプルの App
では、検索ワードに何も入力されていないか、もしくは、サイズとして大中小のどれも選んでいないときに、「検索」ボタンの disabled
を true にします。このとき、ボタンは色が薄くなり押せなくなります。
以上、参考になれば幸いです。
投稿2019/08/07 13:37
総合スコア9058
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/08 09:03
2019/08/08 12:50