input要素とdatalistで入力候補を用意して
リストにない値のときはアラートを出したい
ということを実現するコードを書きました。
コード.gs
function doGet() { return HtmlService.createHtmlOutputFromFile("index"); } |
意訳この機能がやること 指定したHTMLファイルを表示する |
index.html
<!DOCTYPE html> <html> <body> <div id="main"> <input type="text" id="input_text" list="data_list"> <datalist id="data_list"> <option>あめ</option> <option>ちょこ</option> <option>がむ</option> </datalist> </div> <script> document.getElementById('input_text').onchange = checkDataList; function checkDataList() { var dataList = document.getElementById('data_list'); var inputValue = document.getElementById('input_text').value; var array = []; for(var i = 0; i < dataList.options.length; i++) { var value = dataList.options[i].value; array.push(value); } if(array.indexOf(inputValue) === -1) { alert("リストの中から選択してください"); document.getElementById('input_text').focus(); } } </script> </body> </html> |
index.htmlのscript内でやっていること
input_textの値が変わった時にcheckDataListを実行する
- document.getElementById('input_text').onchange = checkDataList;
checkDataListでやることは
- datalistのoptionのvalueを配列に入れて
- その配列と入力された値をindexOfで判定して
- 見つからない場合は-1が返って来るのでアラートを投げる
参考
<datalist>