select要素の重複チェック
Friday, Feb 24, 2006 - 02:30 +09:00
仕事で作った簡単JSそのに。select要素からvalue属性を取り出して、重複している値があれば警告を出すスクリプト。プルダウン・メニューによる複数選択時に、同じ項目を選ばせたくない時などに使う。
Script
<script type="text/javascript">
<!--
function checkSelect(n) {
var No1 = n.no1.options[n.no1.options.selectedIndex].value;
var No2 = n.no2.options[n.no2.options.selectedIndex].value;
var No3 = n.no3.options[n.no3.options.selectedIndex].value;
var No4 = n.no4.options[n.no4.options.selectedIndex].value;
var No5 = n.no5.options[n.no5.options.selectedIndex].value;
var sum5 = new Array(No1,No2,No3,No4,No5);
h = new Object();
for(i=0; i<sum5.length; i++) {
if(!h[sum5[i]]) {
h[sum5[i]] = 1;
} else {
alert("値が重複しています");
return false;
}
}
return true;
}
//-->
</script>
HTML
<form action="#" method="get" onsubmit="return checkSelect(this);">
<fieldset>
<legend>項目を選択</legend>
<table width="300" border="1" cellspacing="1" class="pad5">
<colgroup span="5" width="20%" align="center"></colgroup>
<thead>
<tr>
<th>No.1</th>
<th>No.2</th>
<th>No.3</th>
<th>No.4</th>
<th>No.5</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<select name="no1">
<option value="01" selected="selected">001</option>
<option value="02">002</option>
<option value="03">003</option>
<option value="04">004</option>
<option value="05">005</option>
</select>
</td>
<td>
<select name="no2">
<option value="01" selected="selected">001</option>
<option value="02">002</option>
<option value="03">003</option>
<option value="04">004</option>
<option value="05">005</option>
</select>
</td>
<td>
<select name="no3">
<option value="01">001</option>
<option value="02">002</option>
<option value="03" selected="selected">003</option>
<option value="04">004</option>
<option value="05">005</option>
</select>
</td>
<td>
<select name="no4">
<option value="01">001</option>
<option value="02">002</option>
<option value="03">003</option>
<option value="04" selected="selected">004</option>
<option value="05">005</option>
</select>
</td>
<td>
<select name="no5">
<option value="01">001</option>
<option value="02">002</option>
<option value="03">003</option>
<option value="04">004</option>
<option value="05" selected="selected">005</option>
</select>
</td>
</tr>
</tbody>
</table>
<p><input type="submit" value=" 送信 " /></p>
</fieldset>
</form>
備考
- 選択された値を取得する
- 取得した値を配列に格納
- 新規にオブジェクトを作成
- 配列の中身をインデックス値として、新オブジェクトに定義
- その時点で中身が無ければ、1を代入
- 既に定義された配列には「1」が入っているので、alert()が起動
posted in Javascript Trackback (0)
Trackback
- このエントリーのトラックバックURL
- http://rospear.info/other/mt-tb.cgi/162