2012/11/12 13:00:08作者:佚名来源:网络
【实例名称】
Ajax效果的字符串过滤
【实例描述】
在Microsoft提供的Ajax框架中,有个根据第一个字母选择单词的过滤实例。本例将学习如何使用正则实现这种效果。
【实例代码】
<HTML><HEAD><TITLE>过滤字符实例-学无忧(www.xue51.com)</title> <script type="text/javascript"> function filterlist(selectobj) { // 过滤对象 this.selectobj = selectobj;
//要过滤得字符-i表示忽略大小写,""表示不忽略 this.flags = 'i'; // 要过滤的项-选择是文本还是值 this.match_text = true; this.match_value = false; //调试参数 this.show_debug = false; //初始化的方法 this.init = function() { if (!this.selectobj) return this.debug('没有实现过滤的控件'); if (!this.selectobj.options) return this.debug('过滤控件中没有内容'); //制作选择项的副本 this.optionscopy = new Array(); if (this.selectobj && this.selectobj.options) { for (var i=0; i < this.selectobj.options.length; i++) { // 创建一个新的选择项对象 this.optionscopy[i] = new Option(); // 设置选择项的文本 this.optionscopy[i].text = selectobj.options[i].text; // 设置选择项的值 if (selectobj.options[i].value) { this.optionscopy[i].value = selectobj.options[i].value; } else { this.optionscopy[i].value = selectobj.options[i].text; } } } } this.reset = function() { //重置选择项 this.set(''); }
//实现过滤的方法 this.set = function(pattern) { var loop=0, index=0, regexp, e; if (!this.selectobj) return this.debug('没有实现过滤的控件'); if (!this.selectobj.options) return this.debug('过滤控件中没有内容');
// 清空列表中的内容 this.selectobj.options.length = 0;
// 使用正则实现字符过滤-初始化正则 try { regexp = new RegExp(pattern, this.flags);
} catch(e) { if (typeof this.hook == 'function') { this.hook(); } return; } // 循环添加过滤后的结果 for (loop=0; loop < this.optionscopy.length; loop++) { // 定义选择项 var option = this.optionscopy[loop]; // 实现正则式过滤 if ((this.match_text && regexp.test(option.text)) || (this.match_value && regexp.test(option.value))) { // 使用过滤结果创建新选择项
this.selectobj.options[index++] = new Option(option.text, option.value, false); } } if (typeof this.hook == 'function') { this.hook(); } }
//设置正则表达式的过滤标志 this.set_ignore_case = function(value) { if (value) { this.flags = 'i'; } else { this.flags = ''; } } this.debug = function(msg) { //调试方法 if (this.show_debug) { alert('过滤结果: ' + msg); } } this.init(); //调用初始化方法 } </script> </HEAD> <BODY> <H1>过滤字符实例</H1> <FORM name=myform action=""><SELECT size=5 name=myselect> <OPTION>Aefdf Rsses<OPTION>Lbadmn Adjlf<OPTION>Monica Betty<OPTION>Daniel Jack<OPTION>Bill Gayes<OPTION>Lama Tampel<OPTION>Natty Lees<OPTION>Harry J. Leoo<OPTION>Matty McColm<OPTION>Carrie-Anne Moss<OPTION>Collin Chou<OPTION>Genevieve O'Reilly<OPTION>Harold Perrineau Jr.<OPTION>Jada Pinkett Smith<OPTION>Adrian Rayment<OPTION>Neil Rayment<OPTION>Bruce Spence<OPTION>Hugo Weaving<OPTION>Lambert Wilson<OPTION>Anthony Wong</OPTION></SELECT> <SCRIPT type=text/javascript> var myfilter = new filterlist(document.myform.myselect); //调用过滤的方法 </SCRIPT> <P>过滤: <A title="Clear the filter" href="javascript:myfilter.reset()">重置</A> <A title="Show items starting with A" href="javascript:myfilter.set('^A')">A</A> <A title="Show items starting with B" href="javascript:myfilter.set('^B')">B</A> <A title="Show items starting with C" href="javascript:myfilter.set('^C')">C</A> <A title="Show items starting with D" href="javascript:myfilter.set('^D')">D</A> <A title="Show items starting with E" href="javascript:myfilter.set('^E')">E</A> <A title="Show items starting with F" href="javascript:myfilter.set('^F')">F</A> <A title="Show items starting with G" href="javascript:myfilter.set('^G')">G</A> <A title="Show items starting with H" href="javascript:myfilter.set('^H')">H</A> <A title="Show items starting with I" href="javascript:myfilter.set('^I')">I</A> <A title="Show items starting with J" href="javascript:myfilter.set('^J')">J</A> <A title="Show items starting with K" href="javascript:myfilter.set('^K')">K</A> <A title="Show items starting with L" href="javascript:myfilter.set('^L')">L</A> <A title="Show items starting with M" href="javascript:myfilter.set('^M')">M</A> <A title="Show items starting with N" href="javascript:myfilter.set('^N')">N</A> <A title="Show items starting with O" href="javascript:myfilter.set('^O')">O</A> <A title="Show items starting with P" href="javascript:myfilter.set('^P')">P</A> <A title="Show items starting with Q" href="javascript:myfilter.set('^Q')">Q</A> <A title="Show items starting with R" href="javascript:myfilter.set('^R')">R</A> <A title="Show items starting with S" href="javascript:myfilter.set('^S')">S</A> <A title="Show items starting with T" href="javascript:myfilter.set('^T')">T</A> <A title="Show items starting with U" href="javascript:myfilter.set('^U')">U</A> <A title="Show items starting with V" href="javascript:myfilter.set('^V')">V</A> <A title="Show items starting with W" href="javascript:myfilter.set('^W')">W</A> <A title="Show items starting with X" href="javascript:myfilter.set('^X')">X</A> <A title="Show items starting with Y" href="javascript:myfilter.set('^Y')">Y</A> <A title="Show items starting with Z" href="javascript:myfilter.set('^Z')">Z</A> </P></FORM></BODY></HTML>
【运行效果】
【难点剖析】
本例的重点是使用正则表达式实现字符的过滤,还实现了动态添加列表项的功能。代码中使用“new”关键字创建了RegExp对象,其用来提供简单的正则表达式支持功能。使用RegExp对象的“test”方法,可以对指定的字符串执行一个正则表达式搜索,并返回一个布尔值指示是否找到匹配的模式。当搜索到结果时就使用“new Option”动态创建一个列表项,同时添加到列表中。
【源码下载】
为了JS代码的准确性,请点击:Ajax效果的字符串过滤 进行本实例源码下载
标签: Ajax效果 字符串
相关文章
金山数据恢复大师官方版 v1.0.0.2
详情南方测绘Cass10v10.1.6中文
详情revit 2017
详情KeyShot Pro 9中文(附安装教程) v9.0.286
详情网易新闻客户端v105.3
详情AIMP4v5.11.2421中文绿色美化版
详情onekey一键还原v18.0.18.1008
详情浩辰CAD2020绿色v20.0
详情好图网图标转换工具v4.9.7
详情Adobe indesign cs6
详情aardiov35.0.0中文最新版
详情Adobe Creative Cloud 2024简体中文v5.3.0.48
详情暴风影音16 v9.04.1029去广告精简版
详情ASP.NET Maker 2019(ASP.NET代码生成工具)v12.0.4.0
详情暴风影音v5.92.0824.1111
详情迅雷5稳定版v5.8.14.706
详情使命召唤17官方中文版 v1.0
详情死亡之雨新的僵尸病毒中文v1.0绿色免安装版
详情辐射4v1.7.15.0整合版
详情克莉2v1.0中文版
详情冬日计划v1.2中文版
详情刺客信条英灵殿v1.0吾爱
详情刺客信条英灵殿终极v1.0免安装
详情动物森友会v1.10.0最新
详情哈迪斯杀出地狱v1.37中文
详情嗜血印中文豪华版v1.0豪华版 附游戏攻略秘籍
详情城市战斗v1.0中文
详情尼尔人工生命v1.0steam免费
详情尼尔人工生命升级版v1.0PC
详情层层恐惧2中文v1.0绿色免安装版
详情往日不再v1.0 steam
详情往日不再v1.0pc
详情小生活游戏内置MOD版v2.0(57)安卓版
详情使命召唤手游测试服最新版v1.9.41安卓版
详情三国谋定天下官服v1.2.1安卓版
详情热血新手村高爆版v1.0.0安卓版
详情我养你啊手机版v1.0.0安卓版
详情看懂了就很恐怖的故事(细思极恐)中文版v1.0安卓版
详情背包英雄中文手机版v1.1.1安卓版
详情glow官方版v2.0.9安卓版
详情三国大时代4霸王立志官方正版v1.9安卓版
详情飞卢小说阅读器手机版v7.0.7安卓版
详情牛牛粤语词典软件v20.4.4安卓版
详情PrettyUp视频美化瘦身软件v2.3.0
详情化学方程式app中文版v1.1.0.20安卓版
详情地下城堡3魂之诗2024安卓最新版v1.2.3安卓版
详情南方都市报v6.10.0安卓版
详情阿修罗之眼正版v1.0.10安卓版
详情