avaScriptに挑戦しています。
HTMLに ComboBox ( テキストボックス + リストボックス ) に当たるものがないので、
datalistタグというものでやっています。
( HTML といっても HTML5 です。 )
HTML
1 <form name="Asking"> 2 <label id="TextBoxForKeyword"> 3 キーワード:<input type="text" name="KeyWordEdit" list="KeywordsList"> 4 </label> 5 <datalist id="KeywordsList"> 6 <option value="選択肢A"></option> 7 <option value="選択肢B"></option> 8 <option value="選択肢C"></option> 9 <option value="選択肢D"></option> 10 <option value="選択肢E"></option> 11 </datalist> 12 </form>
という風にして、
テキストボックスにキーワードを入れて 検索かけたりする場合で、
datalistにないキーワードの場合は alert で "キーワードが間違っている" といったメッセージを表示するとします。
メッセージ表示はいいですが、
datalistにないキーワード ... っていうのがわからないのです。
C/C++ & WinAPI や ExcelVBA, Java 等の場合は ComboBox ( 名称が違ったりするが。 ) のインデックスが -1 のときは、
「リストにないデータ」なので、やりやすいですが、HTML+JavaScriptの場合、それができないようなので、どうすればいいか...
上記コードの場合は、
選択A ~ 選択E までのデータなら OK で、選択F等のようにリストにないものは alert等で警告する
のようにしたいのです。
ラジオボタンのように 「指定フォーム内の指定nameの個数分ループし、チェックがあるのをtrueとする」のような感じなのかと思い、
上記コードのoptionタグ内に name="key" を埋め込み、
JavaScript
1/* 2 リスト(候補)に指定キーワードがあるかどうか調べる。 3 あれば true, なければ false を返す。 4 5 keyword := この関数を呼び出す前に取得したデータ ( キーワード ) とする 6*/ 7function HasKey( keyword ){ 8 var flag; 9 10 flag = false; 11 12 for( i = 0; i < document.Asking.key.length; i++ ){ 13 if( document.Asking.key[i].value == keyword ){ 14 flag = true; 15 break; 16 } 17 } 18return flag; 19}
としました。
で、戻り値を受け取った側 ( 呼び出し側 ) は true/false をalert で 表示する
のですが、なぜか何も出てきません。
プログラム ( JavaScript )から 配列で 指定する方法もありますが、
外部jsファイルに記述するので、
できれば変更は HTMLだけに済ませたいのですが。
[環境等]
HTML: HTML5
言語: JavaScript
宜しくお願い致します。
文章を追加します。
私がやりたかったことは、
HTML5 で Combobox ( datalist を使ったもの ) と ボタンを用意して、
ComboBoxのようなもの ( 以下 Combo ) の Text部に入っているデータがリスト部に設定されているデータ群 にまったくヒットしなかったら
"リストにありません。入力しなおしてください。" というようなalertを表示し再入力を促す。
-1 以外 ( リストにあるデータ ) なら そのページに移動する...
といった感じです。
私がイメージしていたのは、
ボタンが押されたときに動く関数 ( 以下 ButtonProc )と
リスト部にあるデータかどうかを調べる関数 ( 以下 CheckListIndex )
とあって、
ボタンが押された -> ButtonProc が呼ばれる -> ButtonProc内で CheckListIndex が呼ばれ、選択されているインデックスを調べる -> 戻り値が
-1 のとき データが存在しない。それ以外なら 存在する。 -> 戻り値が -1 なら "リストにありません。入力しなおしてください。" と表示し、それ以外なら 指定のページに移動する。
といった感じです。
指定のページ...
たとえば、
HTML の タグに埋め込まれている id が Combo のリスト部 ( datalist ) に入っていて、
true のとき ( つまり -1 以外 ) 、ページアドレス + "#" + 入力値
という感じにしたいのです。
たとえば、
"選択肢A" が選ばれている場合は
"Object.html#選択肢A"
に移動...
みたいに。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー