jsでフォームに何か入力があればdisabledが解除されるjsを作っているのですが、selectボックスを選択した場合が取れません。
正常に動作する場合はselectで選択を行うと select 要素で change イベントが発生したときにdisabled = falseにならないといけません。
途中まで制作中のサンプル
※こちらも一つのselectしか取れません
※.getElementsByClassName、 document.querySelectorAllにすると動作しなくなります
<label for="fruit">選択してください</label> <select class="fruit"> <option value="orange">Orange</option> <option value="lemon">Lemon</option> <option value="strawberry">Strawberry</option> <option value="app">app</option> </select> <label for="fruit">選択してください</label> <select class="fruit"> <option value="oranges">Oranges</option> <option value="lemons">Lemons</option> <option value="strawberrys">Strawberrys</option> </select>
let fruitSelect = document.querySelector('.fruit'); fruitSelect.addEventListener('change', valueChange); function valueChange(){ let selectOptions = fruitSelect.selectedOptions; console.log('新しく ' + fruitSelect.value + ' を選択しました'); for (let i = 0 ; i < selectOptions.length ; i++){ //console.log(selectOptions[i].value); button.disabled = false; button.classList.remove('js-button'); } }
<div class="col-9"> <input type="text" class="form-control" id="inputtext5" placeholder=""> </div> <label for="textarea5" class="col-sm-3 col-form-label">特徴</label> <span class="c-check u-has-display-block">必須</span> <div class="col-6"> <div class="form-group p-textarea--6"> <textarea class="form-control" id="textarea5" placeholder=""></textarea> </div> </div> <div class="p-select-body u-body-flex col-md-9 border-bottom-solid"> <span class="p-select-body-sub--text u-has-inline-block">選択くださいc</span> <div class="col-md-9"> <div class="select-icon--1"> <select required="" class="form-control"> <option value="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> <div class="select-icon--2 p-tree-icon--1"> <select required="" class="form-control"> <option value="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> <div class="select-icon--3 p-tree-icon--2"> <select required="" class="form-control p-tree--2"> <option value="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> </div> </div> <div class="p-select-body u-body-flex col-md-9 border-bottom-solid"> <span class="p-select-body-sub--text u-has-inline-block"> 1</span> <div class="col-md-9"> <div class="select-icon--1"> <select required="" class="form-control"> <option value="" disabled="" selected="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> <div class="select-icon--2 p-tree-icon--1"> <select required="" class="form-control"> <option value="" disabled="" selected="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> <div class="select-icon--3 p-tree-icon--2"> <select required="" class="form-control p-tree--2"> <option value="" disabled="" selected="">選択ください</option> <option value=""></option> <option value="">2</option> <option value="">3</option> <option value="">4</option> <option value="">5</option> </select> </div> </div> </div> <button type="submit" disabled="" class="js-button c-genric-btn p-genric-btn--secondary" onclick="location.href='#'">ここまでを保存する </button>
const formControl = document.querySelectorAll('.form-control'); const button = document.querySelector('.p-genric-btn--secondary'); let select = document.querySelectorAll('.p-select-body'); //console.log(formControl); //console.log(button); //console.log(inputChange); formControl.forEach(formControl => { formControl.addEventListener('keyup', (e) => { if (1 <= e.target.value.length) { button.disabled = false; inputChange() button.classList.remove('js-button'); } }) }); function inputChange(event) { ??不明 }
selectボックスは12個あるのですが、全て対象で選択されればdisabledが解除されればいいのですが、うまくいかなくて。functionをどう書けばいいのかわからない状態です。
回答2件
あなたの回答
tips
プレビュー