版权所有:这是我的原创,转载请尊重我的劳动成果,注明出处,谢谢!
测试页面:
<!--
@author: 熊水林(xionglb@163.com)
@lastModified: 2006-7-19
@descript: 按拼音检索下拉框选项
-->
<script language=javascript src="拼音检索.js"></script>
<body οnlοad="initSelect(myselect)">
<input name="shengmu" οnkeydοwn="return toUpperText(this)">(声母)
<input type="button" value="查找" οnclick="findByCapital(shengmu,myselect)"><BR>
<select name="myselect" οnkeydοwn="quickSelect(this)">
<option value="">人猿泰山
<option value="">中南海保镖
<option value="">神话
<option value="">战警
<option value="">大话西游
<option value="">喜剧之王
<option value="">母亲
<option value="">倚天屠龙记
<option value="">南北少林
<option value="">霸王别姬
<option value="">精武英雄
<option value="">龙在天涯
</select>(第一个字)
</body>
以下是“拼音检索.js”
/*
@author: 熊水林(xionglb@163.com)
@lastModified: 2006-7-19
@descript: 按拼音检索下拉框选项
*/
document.write('<script language=javascript src="../GBHZ2PY.js"></script>');
var piny = new Array();
var capital = new Array();
function initSelect(combox){
var firstHZ = "";
var len = combox.length;
for (var i=0; i<len; i++){
firstHZ += combox.options[i].text.charAt(0);
}
firstHZ = firstHZ.split("").sort(pinyinSort);
for (var i=0; i<firstHZ.length; i++){ //重新排列下拉框并转换首个汉字
for (var j=0; j<len; j++){
var optionObj = combox.options[j];
if (firstHZ[i] == optionObj.text.charAt(0)){
combox.add(new Option(optionObj.text,optionObj.value));
combox.remove(j);
len --;
}
}
piny.push(pinyin(firstHZ[i]).toUpperCase());
}
for (var i=0; i<combox.length; i++){ //每个字的首个声母
var text = combox[i].text;
var shengmu = "";
for (var j=0; j<text.length; j++){
shengmu += pinyin(text.charAt(j)).toUpperCase().charAt(0);
}
capital.push(shengmu);
}
}
function quickSelect(combox){
var ch = String.fromCharCode(event.keyCode);
for (var i=0; i<piny.length; i++){
if (piny[i].substring(0,1)==ch){
combox.selectedIndex = i;
break;
}
}
}
function findByCapital(textObj,combox){
var shengmu = textObj.value;
var index = -1;
while (shengmu.length>0 && index==-1){
for (var i=0; i<combox.length; i++){
if (capital[i].indexOf(shengmu) == 0){
combox.selectedIndex = i;
index = i;
break;
}
}
shengmu = shengmu.substring(0, shengmu.length-1);
}
if (index == -1){
alert("未找到");
}
}
//输入大写字母
function toUpperText(textObj){
if (event.keyCode>=65 && event.keyCode<=90){
textObj.value += String.fromCharCode(event.keyCode);
return false;
}
return true;
}