前回、シンプルなパターンのセレクトボックス機能を紹介しました。
今回、これに「選択肢のチェックを行い、場合によっては元に戻す」という機能を追加したいと思います。意外とネットで調べると周りくどい処理が多かったので、極力シンプルなものに仕上げてます。
今回、初期値セットが必要になるので注意してください。初期値をセットしたくない場合は、空の選択肢が必要かもしれません。
実装
<select id="selectbox" data-pre-value="value1">
<option value="value1" selected>値1</option>
<option value="value2">値2</option>
<option value="value3">値3</option>
</select>
前回との違いは、selectタグに対してdata-pre-valueが付加、value1に対してselectedつまり初期値が設定されていることです。
もし初期値をvalue2にしたい場合は、data-pre-valueを”value2″にし、value2のoptionタグにselectedを付加してください。
jsはこんな感じ。
let target = document.querySelector('#selectbox');
target.addEventListener('change', function(e) {
let changeValue = this.value;
let preValue = this.dataset.preValue;
let hasError = false;
//何かしらの判定処理やアラートを実行
if(hasError) {
this.value = preValue;
} else {
this.dataset.preValue = changeValue;
}
});
hasErrorに対して、エラーがあった場合はtrueを渡すと元の値がthis.valueにセットされます。
入力値判定する処理をコメントのところに書いてください。
まとめ
言語やフレームワークによってはイベントでpreValueがあったりしますがネイティブjsでは自作する必要があります。ぜひ上記の仕組みをコピペして使ってみてください。