html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表

javascript实现通过拼音首字母快速选择下拉列表

更新时间:2008年05月31日 13:18:45   作者:

比如,某选项的拼音首字母为"a",只要按下键盘上的"a",就可以快速选择该项。

如何解决重音字 和兼容ff.

ff下怎呢得到asc呢,忘高手指教

下拉列表快速选择

// 获取拼音首字母

function getPinYin(c) {

execScript("tmp=asc(\""+c+"\")", "vbscript");

tmp = 65536 + tmp;

if(tmp>=45217 && tmp<=45252) return "A";

if(tmp>=45253 && tmp<=45760) return "B";

if(tmp>=45761 && tmp<=46317) return "C";

if(tmp>=46318 && tmp<=46825) return "D";

if(tmp>=46826 && tmp<=47009) return "E";

if(tmp>=47010 && tmp<=47296) return "F";

if((tmp>=47297 && tmp<=47613) || (tmp == 63193)) return "G";

if(tmp>=47614 && tmp<=48118) return "H";

if(tmp>=48119 && tmp<=49061) return "J";

if(tmp>=49062 && tmp<=49323) return "K";

if(tmp>=49324 && tmp<=49895) return "L";

if(tmp>=49896 && tmp<=50370) return "M";

if(tmp>=50371 && tmp<=50613) return "N";

if(tmp>=50614 && tmp<=50621) return "O";

if(tmp>=50622 && tmp<=50905) return "P";

if(tmp>=50906 && tmp<=51386) return "Q";

if(tmp>=51387 && tmp<=51445) return "R";

if(tmp>=51446 && tmp<=52217) return "S";

if(tmp>=52218 && tmp<=52697) return "T";

if(tmp>=52698 && tmp<=52979) return "W";

if(tmp>=52980 && tmp<=53688) return "X";

if(tmp>=53689 && tmp<=54480) return "Y";

if(tmp>=54481 && tmp<=62289) return "Z";

return c.charAt(0);

}

// select helper

SelectHelper = new function() {

// 初始化

this.init = function() {

document.attachEvent("onkeypress", function() {

var elm = event.srcElement;

if (elm.tagName == "SELECT"

&& elm.className.indexOf("SelectHelper") == -1) {

elm.className += "SelectHelper";

elm.attachEvent("onkeypress", SelectHelper.getNextKeyItem);

elm.fireEvent("onkeypress", event);

}

});

}

// 获取选项文本的首字符

function getItemKeyChar(option) {

return option.text.charAt(0).toUpperCase();

}

// 查找并选中匹配的选项

this.getNextKeyItem = function() {

var elm = event.srcElement;

var index = elm.selectedIndex + 1;

do {

if (index == elm.length) index = 0;

if (index == elm.selectedIndex) return false; // 未找到匹配的选项,则退出

} while (key2Char(event.keyCode) != getPinYin(getItemKeyChar(elm.options[index++])));

elm.selectedIndex = index - 1; // 选中匹配的选项

return false; // 取消原有的选择功能

}

};

/**

* 返回键盘事件对应的字母或数字

* a-z: 97 -> 122

* A-Z: 65 -> 90

* 0-9: 48 -> 57

*/

function key2Char(key) {

var s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

if (key >= 97 && key <= 122) return s.charAt(key - 97);

if (key >= 65 && key <= 90) return s.charAt(key - 65);

if (key >= 48 && key <= 57) return "" + (key - 48);

return null;

}

SelectHelper.init();

比如,某选项的拼音首字母为"a",只要按下键盘上的"a",就可以快速选择该项。

北京

上海

天津

重庆

河北

山西

内蒙古

辽宁

32

吉林

黑龙江

江苏

浙江

&^

安徽

福建

A1

江西

山东

河南

湖北

湖南

31

广东

广西

海南

A2

四川

贵州

云南

西藏

陕西

甘肃

宁夏

青海

新疆

香港

澳门

台湾

其它

北京

上海

天津

重庆

河北

山西

内蒙古

辽宁

32

吉林

黑龙江

江苏

浙江

&^

安徽

福建

A1

江西

山东

河南

湖北

湖南

31

广东

广西

海南

A2

四川

贵州

云南

西藏

陕西

甘肃

宁夏

青海

新疆

香港

澳门

台湾

其它

下拉列表快速选择比如,某选项的拼音首字母为"a",只要按下键盘上的"a",就可以快速选择该项。北京上海天津重庆河北山西内蒙古辽宁32吉林黑龙江江苏浙江&^安徽福建A1江西山东河南湖北湖南31广东广西海南A2四川贵州云南西藏陕西甘肃宁夏青海新疆香港澳门台湾其它北京上海天津重庆河北山西内蒙古辽宁32吉林黑龙江江苏浙江&^安徽福建A1江西山东河南湖北湖南31广东广西海南A2四川贵州云南西藏陕西甘肃宁夏青海新疆香港澳门台湾其它

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

相关文章

1a1b05c64693fbf380aa1344a7812747.png

onpropertypchange...2006-07-07

4f55910a645b073bc4fc65dc10dc14bd.png

在批量处理列表数据时,往往会用到 CheckBox 的全选与取消全选,虽然她的实现原理很简单,但是对新手来说还是有些难度。2010-07-07

0ea3c7666119d5615e582f823fb3fad6.png

这篇文章主要分享一段js图片不间断滚动的代码,蛮优秀的,需要的朋友可以参考下。2016-06-06

4f96a78db829b1556ff16de21e013c7a.png

刚才博客园的javascript首页看到一个朋友的全选/反选效果。2010-04-04

8cc1031babc6aff2319f1c6af8544aa0.png

检测邮箱地址是否合法 Check Mail Address (For: IE5+、FF1.06、Opera 7+ ...)[...2006-12-12

0c932a99bb7b6f23c937db507070cc7b.png

收集的比较全的关于用js操作select中的options方法2008-10-10

cca732bf65a93ed2ec0ac80c638460fe.png

在输入文本框内容时,有时候需要提示用户输入的内容,为了更友好的提示用户,我用js写了一种方法,当点击文本框时,在文本框右边提示用户要输入的信息。2009-12-12

2d9f31f2af7b675a3d153d2b7f1035a7.png

HTML-CSS群中单选引发的“事件”...2007-03-03

b452cee8ec5cd9e58ab98eba17281e59.png

下面的代码包括了用户名,密码,邮箱的基本验证代码,需要的朋友可以参考下。2009-09-09

f4838ec7e2d4da28e0b57d4e852dadd4.png

最近朋友使用了form的一个表单命名为关键词引起了无法reset和提交.原来是这个问题2007-12-12

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值