- 浏览: 1323940 次
- 性别:
- 来自: 湖南澧縣
文章分类
最新评论
-
虾米小尹:
不行啊!2.2-0.25=1.9500000000000002 ...
JavaScript浮点数运算 —— 精度问题 -
heluping000000:
引用String a= "abc",首先在 ...
String,到底创建了多少个对象? -
mack:
谢谢分享matcher.appendReplacement(s ...
string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement -
wzt3309:
完全理解,比网上其他资料都要详细
String,到底创建了多少个对象? -
u014771876:
Java中十六进制转换 Integer.toHexString()
在写页面时,我们有时会有这样的需求,要下拉框可选可输入,该脚本就是可输可选控件.该脚本是根据网上某大侠源脚本改编而成,现记录在此,以备后用.
源码引自:http://blog.csdn.net/cxzhq2002
新增功能: 支持模糊定位、支持上下箭选择、支持注释层功能、支持按回车键从下拉框中选择选项
效果图如下所示:
//下拉框选项所对应的层的名字 var SELECT_DIV="SELECT_DIV_"; //注释层的名字 var NODE_DIV="NODE_DIV_"; var textObject; //焦点是否在选择层上:初始时为false,表示默认不在选择层上 //主要防止鼠标点击选择项时,文本框会失去焦点,这样选择层就会跟着隐藏,此时还未 //让点击的选择项选中并赋值到文本框中去。此时可以设置鼠标在选择层上时cursorInSelectDivObj=ture //这时点击时不会立即隐藏选择层,等选中后再设置cursorInSelectDivObj=false,此时就可以隐藏选择层了 var cursorInSelectDivObj=false; //是否是ie浏览器 var ie=(document.getElementById && document.all); //全局的注释数组 var noteArr = new Array(); //以防名字已存在,循环取名,先判断是否存在"Textselectshow_Div"的对象, //如果存在,则重新取名为"Textselectshow_Div1",如果"Textselectshow_Div1" //还是存在,则取名为"Textselectshow_Div2",依次类推:"Textselectshow_Div..." for(var i=0;document.getElementById(SELECT_DIV)!=null;i++){ var tmpNm = SELECT_DIV + i; //如果存在同名的,则以重新取名为 Textselectshow_Div + i ,如果Textselectshow_Div + i //存在,则循环取名为 Textselectshow_Div + i + 1,直到不重名为止。如果存在,则赋值为本身再循环 SELECT_DIV=(document.getElementById(tmpNm)==null)?tmpNm:SELECT_DIV; } //以同样的命名方式为注释层取名 for(var i=0;document.getElementById(NODE_DIV)!=null;i++){ var tmpNm = NODE_DIV + i; NODE_DIV=(document.getElementById(tmpNm)==null)?tmpNm:NODE_DIV; } //为隐藏下拉框创建一个对应的层,并且刚初始化时为隐藏的 document.write ('<div id="' + SELECT_DIV + '" style="position: absolute;' + 'cursor: default;border: 1px solid #B2B2B2;background-color: #fff;display: none;"></div>') //同样方式创建一个注释层 document.write ('<div id="' + NODE_DIV + '" style="position: absolute;' + 'cursor: default;border: 1px solid #B2B2B2;background-color:#ffffd9;display: none;' + 'overflow-x:auto;word-wrap:break-word"></div>') // 获取某对象的坐标 function getObjPosition(Obj){ try{ var sumTop=0; var sumLeft=0; while(Obj!=window.document.body){ sumTop+=Obj.offsetTop; sumLeft+=Obj.offsetLeft; Obj=Obj.offsetParent; } return {left:sumLeft,top:sumTop}; }catch(e){alert(e);} } //处理Div中的选项/* 某个选项,文本框的ID */ function optionDivOnmouseover(optionDivObj,textId){ //文本框 var textObj=document.getElementById(textId); //optionDivObj.parentNode为某select option选项所对应层的父对象,即SELECT_DIV层 //得到select下拉框所有option选项所对应的层 var objChilddiv=optionDivObj.parentNode.getElementsByTagName("div"); //清空所有选项层的样式,即去掉原来背景为蓝色的选项层的样式 for(var i=0; i < objChilddiv.length; i++){ objChilddiv[i].style.cssText=''; } //使本身选项层的背景为蓝色,字为白色,模拟选中样式 optionDivObj.style.cssText='background-color: #330066;color: #ffffff;' var noteDivObj =document.getElementById(NODE_DIV); var selectDivObj =document.getElementById(SELECT_DIV); ///////设置注释层中的选项及位置 setNoteDivObj(textObj,optionDivObj,selectDivObj,noteDivObj); //点击某个选项层时 optionDivObj.onclick=function(){ //点击选项后选择层后要隐藏,即要设置成失去焦点状态 cursorInSelectDivObj=false; //把选中的某选项层的内容赋值为文本框 if(ie){ textObj.value=optionDivObj.outerText; } else { textObj.value=optionDivObj.textContent; } //var noteDivObj =document.getElementById(NODE_DIV); //点击某个选项层时,对应的注释层也要隐藏 noteDivObj.style.display='none'; //点击过后使文本框获取焦点 textObj.focus(); ////////调用文本框失去焦点触发的方法 textObjectBlur(selectDivObj,noteDivObj); } } /** * textObj:文本框 * seleObj:下拉框 * noteArr:noteArr 注釋數組,沒有可以不传或为null或空数组 */ function showSelect(textObj,seleObj,arrNote){ textObject = textObj; //保存全局注释,供其他方法使用 noteArr = arrNote; var selectDivObj =document.getElementById(SELECT_DIV); var noteDivObj =document.getElementById(NODE_DIV); var seleObj =document.getElementById(seleObj); ///////鼠标移出下拉框层时 selectDivObj.onmouseout=function(){ //当鼠标移出选择层时,设置选择层为失去焦点状态 cursorInSelectDivObj=false; //当鼠标移出选择层时,让文本框获取焦点 textObj.focus(); } ///////文本框失去焦点时 textObj.onblur=function(){ textObjectBlur(selectDivObj,noteDivObj); } ///////鼠标经过下拉框层时 selectDivObj.onmouseover=function(){ //当鼠标移进选择层时,设置选择层为获得焦点状态 cursorInSelectDivObj=true; } ///////文本框点击时 textObj.onclick=function(){ //设置下拉框对应层中的选项及位置 setSelectDivObj(textObj,selectDivObj,seleObj); //设置注释层中的选项及位置 setNoteDivObj(textObj,null,selectDivObj,noteDivObj); //自动匹配与模糊定位 autoMatch(textObj,selectDivObj); } ///////文本框上输入时 textObj.onkeyup=function(){ //如果按的是Tab键时直接退出 if(event.keyCode==9){ return false; } if(event.keyCode==13){ enter(textObj,selectDivObj,noteDivObj); return false; } //设置下拉框对应层中的选项及位置 setSelectDivObj(textObj,selectDivObj,seleObj); //如果按了上下键时 if(event.keyCode == 38 || event.keyCode == 40 ){ var selectedOptionDiv = downOrUp(textObj,selectDivObj,noteDivObj,seleObj); //设置注释层中的选项及位置 setNoteDivObj(textObj,selectedOptionDiv,selectDivObj,noteDivObj); }else{ //设置注释层中的选项及位置 setNoteDivObj(textObj,null,selectDivObj,noteDivObj); } //自动匹配与模糊定位 autoMatch(textObj,selectDivObj); } } // 隐藏遮挡ID为objID的对象(层)的所有select function hiddenOverSelects(objID){ var sels = document.getElementsByTagName('select'); for (var i = 0; i < sels.length; i++){ if (obj1OverObj2(document.getElementById(objID), sels[i])){ sels[i].style.visibility = 'hidden'; }else{ sels[i].style.visibility = 'visible'; } } } //判断obj1是否遮挡了obj2 function obj1OverObj2(obj1, obj2){ var pos1 = getObjPosition(obj1) var pos2 = getObjPosition(obj2) var result = true; var obj1Left = pos1.left - window.document.body.scrollLeft; var obj1Top = pos1.top - window.document.body.scrollTop; var obj1Right = obj1Left + obj1.offsetWidth; var obj1Bottom = obj1Top + obj1.offsetHeight; var obj2Left = pos2.left - window.document.body.scrollLeft; var obj2Top = pos2.top - window.document.body.scrollTop; var obj2Right = obj2Left + obj2.offsetWidth; var obj2Bottom = obj2Top + obj2.offsetHeight; if (obj1Right <= obj2Left || obj1Bottom <= obj2Top || obj1Left >= obj2Right || obj1Top >= obj2Bottom) result = false; return result; } //文本框失去焦点时调用的方法 function textObjectBlur(selectDivObj,noteDivObj){ //如果点击了某个选项后,已设置选择层为失去焦点状态,此时选择层可以隐藏了 if(!cursorInSelectDivObj){ selectDivObj.style.display='none'; } if(ie){ //恢复所有已被隐藏的下拉框 hiddenOverSelects(selectDivObj.id); if(noteDivObj.style.display=='inline'){ noteDivObj.style.display=selectDivObj.style.display; } if(selectDivObj.style.display=='none'){ noteDivObj.style.display='none'; } } } //设置下拉框对应层中的选项及层位置 function setSelectDivObj(textObj,selectDivObj,seleObj){ //如果已显示,则直接退出 if(selectDivObj.style.display=='inline'){ return false; } //如果文本框的id为空时,则要命名 for(var i=0;textObj.id=='';i++){ var tmpNm = "textSelect" + i; textObj.id = (document.getElementById(tmpNm)==null)?tmpNm:''; } selectDivObj.style.left = getObjPosition(textObj).left; selectDivObj.style.top = getObjPosition(textObj).top + textObj.offsetHeight; selectDivObj.style.width = textObj.offsetWidth; selectDivObj.style.height = ''; selectDivObj.style.overflowY = ''; selectDivObj.innerHTML='' //读取select的项目放到Div里。 for(var x = 0; x<seleObj.options.length; x++){ selectDivObj.innerHTML+="<div onmouseover=\"optionDivOnmouseover(this,'" + textObj.id + "')\" style='width:100%;white-space: nowrap;cursor: default;'>" +seleObj.options[x].text+"</div>"; } //调整Div高度,过度显示滚动条 if(x > 8){ selectDivObj.style.height=13 * 8; selectDivObj.style.overflowY='auto'; }else{ selectDivObj.style.height=15 * x; selectDivObj.style.overflowY='auto'; } selectDivObj.style.display='inline'; if(ie){ hiddenOverSelects(selectDivObj.id); } } //设置下拉框对应层中的选项及层位置 function setNoteDivObj(textObj,optionDivObj,selectDivObj,noteDivObj){ //如果需要显示对应键的注释时 if(noteArr != null && noteArr != undefined){ //获取下拉框所对应的层的宽度与左边距 var regStr = new RegExp("(([0-9]+)px)"); selectDivObj.style.width.match(regStr); var width=RegExp.$2; regStr = new RegExp("(([0-9]+)px)"); selectDivObj.style.left.match(regStr); var left= RegExp.$2; //设置注释层的位置与大小 noteDivObj.style.left=parseInt(width) +parseInt(left); noteDivObj.style.top=selectDivObj.style.top; noteDivObj.style.width=width*1; noteDivObj.style.height=selectDivObj.style.height; var i = 0; //如果找到对应的注释,则显示注释层 for(i = 0;i < noteArr.length;i++){ if(optionDivObj==null && textObj.value == noteArr[i][0]){ noteDivObj.innerText=noteArr[i][1]; noteDivObj.style.display="inline"; break; }else if(optionDivObj !=undefined && optionDivObj !=null && optionDivObj.outerText == noteArr[i][0]){ noteDivObj.innerText=noteArr[i][1]; noteDivObj.style.display="inline"; break; } } if(i==noteArr.length){ noteDivObj.innerText=''; noteDivObj.style.display="none"; } } } //自动匹配选项中符合文本框中输入的值的记录 function autoMatch(textObj,selectDivObj){ if(textObj.value==''){ return null; } if(event.keyCode == 38 || event.keyCode == 40 ){ return null; } return autoMatch_(textObj,selectDivObj); } //String.fromCharCode function autoMatch_(textObj,selectDivObj){ var objChilddiv=selectDivObj.getElementsByTagName("div"); var arr = new Array(); //清除所有层的样式 for(var x=0;x<objChilddiv.length;x++){ objChilddiv[x].style.cssText=''; } var selectOptionDivObj = null; var textValueReg = replaceReg(textObj.value); for(var x=0;x<objChilddiv.length;x++){ var strChilddiv=(ie)?objChilddiv[x].outerText:textObj.textContent; var regRegExp = new RegExp('^'+textValueReg); //alert('^'+textValueReg + " " + strChilddiv + " " + textObj.value); //先模糊匹配 if(regRegExp.test(strChilddiv)){ //让模糊匹配到的选项上移 selectDivObj.scrollTop=objChilddiv[x].offsetHeight*x; //再精确匹配,且让精确匹配的成选中状态 if(strChilddiv==textObj.value){ arr[0]=objChilddiv[x]; arr[1]=x; objChilddiv[x].style.cssText='background-color: #330066;color: #ffffff;'; break; }else{ objChilddiv[x].style.cssText=''; } break; }else{ objChilddiv[x].style.cssText=''; } textObj.focus(); } return arr; } //上下翻 function downOrUp(textObj,selectDivObj,noteDivObj,seleObj){ //得到select下拉框所有option选项所对应的层 var objChilddiv=selectDivObj.getElementsByTagName("div"); if(objChilddiv.length == 0){ return null; } var selectedOptionDiv; var hig = 0; if(event.keyCode==38){ selectedOptionDiv = objChilddiv[objChilddiv.length -1]; hig = objChilddiv.length -1; }else if(event.keyCode==40){ selectedOptionDiv = objChilddiv[0]; hig = 0; }else{ selectedOptionDiv = objChilddiv[0]; } var i=0; //清空所有选项层的样式,即去掉原来背景为蓝色的选项层的样式 for(i=0; i < objChilddiv.length; i++){ if(objChilddiv[i].style.backgroundColor=='#330066'){ if(event.keyCode==38){ if(i != 0){ selectedOptionDiv = objChilddiv[i - 1]; hig = i - 1; }else{ selectedOptionDiv = objChilddiv[objChilddiv.length - 1]; hig = objChilddiv.length -1; } }else if(event.keyCode==40){ if(i != (objChilddiv.length -1)){ selectedOptionDiv = objChilddiv[i + 1]; hig = i + 1; }else{ selectedOptionDiv = objChilddiv[0]; hig = 0; } } objChilddiv[i].style.cssText=''; break; } } //解决用上下键弹出下拉列表时,让列表中与文本框相同值的选项选中 if(i==objChilddiv.length){ //自动匹配与模糊定位 var selectOption = autoMatch_(textObj,selectDivObj); if(selectOption.length != 0){ //设置注释层中的选项及位置 setNoteDivObj(textObj,selectOption,selectDivObj,noteDivObj); selectedOptionDiv = selectOption[0]; hig = selectOption[1]; } } selectDivObj.scrollTop=selectedOptionDiv.offsetHeight*hig; //使本身选项层的背景为蓝色,字为白色,模拟选中样式 selectedOptionDiv.style.cssText='background-color: #330066;color: #ffffff;' textObj.focus(); return selectedOptionDiv; } //回车 function enter(textObj,selectDivObj,noteDivObj){ if(selectDivObj.style.display=='none'){ return false; } //得到select下拉框所有option选项所对应的层 var objChilddiv=selectDivObj.getElementsByTagName("div"); if(objChilddiv.length == 0){ return false; } var selectedOptionDiv; //清空所有选项层的样式,即去掉原来背景为蓝色的选项层的样式 for(var i=0; i < objChilddiv.length; i++){ if(objChilddiv[i].style.backgroundColor=='#330066'){ textObj.value=(ie)?objChilddiv[i].outerText:objChilddiv[i].textContent; //回车时相当于点击了某个选项,此时设置选择层为失去焦点状态 //再调用文本框失去焦点方法textObjectBlur让选择层隐藏 cursorInSelectDivObj=false; textObjectBlur(selectDivObj,noteDivObj); break; } } } var regChars = new Array(); regChars[0]=new Array(); regChars[0][0]="$"; regChars[0][1]="\\$"; regChars[1]=new Array(); regChars[1][0]="("; regChars[1][1]="\\("; regChars[2]=new Array(); regChars[2][0]=")"; regChars[2][1]="\\)"; regChars[3]=new Array(); regChars[3][0]="*"; regChars[3][1]="\\*"; regChars[4]=new Array(); regChars[4][0]="+"; regChars[4][1]="\\+"; regChars[5]=new Array(); regChars[5][0]="."; regChars[5][1]="\\."; regChars[6]=new Array(); regChars[6][0]="["; regChars[6][1]="\\["; regChars[7]=new Array(); regChars[7][0]="?"; regChars[7][1]="\\?"; regChars[8]=new Array(); regChars[8][0]="]"; regChars[8][1]="\\]"; regChars[9]=new Array(); regChars[9][0]="^"; regChars[9][1]="\\^"; regChars[10]=new Array(); regChars[10][0]="|"; regChars[10][1]="\\|"; regChars[11]=new Array(); regChars[11][0]="{"; regChars[11][1]="\\{"; regChars[12]=new Array(); regChars[12][0]="}"; regChars[12][1]="\\}"; regChars[13]=new Array(); regChars[13][0]="\\"; regChars[13][1]="\\\\"; //代换正则表达式中特殊字符 function replaceReg(str){ //$()*+.[?]^|}{\ var regStr =/[$()*+.\[?\]^|}{\\]/g; if(!str.match(regStr)){ return str; } var regArr =/./g; var valueArr = str.match(regArr); var tempStr = ""; for(var i = 0 ; i < valueArr.length; i++){ regStr =/[$()*+.\[?\]^|}{\\]/g; if(valueArr[i].match(regStr)){ valueArr[i] = findByKey(valueArr[i])[1]; } tempStr = tempStr + valueArr[i]; } return tempStr; } //查询正则特殊字符要替换字符串 function findByKey(key){ var i = 0; for(var i = 0; i < regChars.length; i++){ if(regChars[i][0]==key){ return regChars[i]; } } if(i == regChars.length ){ return null; } } //在最后一个输入元素上按回车键时自动提交 function keydownOnSelectInput(){ if(event.srcElement.type == undefined){ return; } var type = event.srcElement.type.toLowerCase(); if(event.keyCode!=13 || type=='button' || type=='submit' || type=='reset' || type=='textarea' || type==''){ return; } var noteDivObj =document.getElementById(NODE_DIV); var selectDivObj =document.getElementById(SELECT_DIV); if(event.srcElement.nextSibling != null && event.srcElement.nextSibling.type=='select-one' && selectDivObj.style.display=='inline'){ var objChilddiv=selectDivObj.getElementsByTagName("div"); var i=0; for(i=0; i < objChilddiv.length; i++){ if(objChilddiv[i].style.backgroundColor=='#330066'){ break; } } //在可选可输入文本框上按回车时,如果下拉列表中没有选中项,则直接跳到下一输入元素 if(i == objChilddiv.length){ cursorInSelectDivObj=false; textObjectBlur(selectDivObj,noteDivObj); event.keyCode=9; }else{ event.returnValue=false; } return; } var srcForm = event.srcElement.form; if(srcForm == undefined || srcForm == null){ return ; } var srcForm = event.srcElement.form; var srcElementNext = null; var allElems = srcForm.elements; for(var i = 0; i < allElems.length; i++){ if(event.srcElement == allElems[i]){ if(!isLastElem(allElems,i+1)){ event.keyCode=9; break; }else { if(event.srcElement.type=='select-one'){ var subButton = findSubmitButton(allElems,i); if(subButton !=null){ subButton.click(); } } } } } } //查找提交按钮 function findSubmitButton(allElems,index){ for(var i = index; i < allElems.length; i++){ if(allElems[i].type=='submit'){ return allElems[i]; } } return null; } //判断是否是最后一个元素 function isLastElem(allElems,index){ if(index >=allElems.length || allElems[index].type=="submit" ){ return true; } for(var i = index; i < allElems.length; i++){ var tempObj = allElems[i]; while(tempObj != window.document.body){ //如果该元素未隐藏,则判断父元素是否隐藏 if(tempObj.style.display != 'none'){ tempObj=tempObj.parentElement; }else{ //如果输入元素隐藏,则递归查找其他输入元素是否隐藏 return isLastElem(allElems,i+1); } } //如果某输入元素本身未隐藏,且其父也未隐藏,则不是最后一输入元素 if(tempObj == window.document.body){ return false; } } } //自动绑定按键事件 window.document.onkeydown = keydownOnSelectInput; window.onresize=function(){ if(textObject){ textObject.blur(); } }
发表评论
-
HTML、JS、JSON特殊字符
2010-12-13 23:47 25802JS到HTML特殊字符转换 这几天做项目,发现从服务器端以J ... -
HTML — HTTP URL 中的特殊字符
2009-10-31 18:16 32301. + URL中的+号表示空格 ... -
HTML — CSS选择器
2009-10-25 21:11 2114一个样式规则由两部分组成:选择器和样式声明。选择器表明要为哪一 ... -
部分解决JsUnit无法在firefox3、safari 测试的问题
2009-10-25 07:03 1399在上一篇中出现了一个问题,就是用 jsunit2.2alpha ... -
JsUnit——eclipse插件(四)
2009-10-25 06:59 2396这节我们来看看如何通过JsUnit插件来运行前几节所测试过的测 ... -
10、JavaScript跨浏览器需注意的问题——ajax基础笔记
2009-10-21 22:19 1316向表中追加行 创建表格行时,我们要把创建的 tr 追加到 t ... -
JsUnit详解——Web服务方式(三)
2009-10-21 00:21 2387上两节提到过以Web方式来运行JsUnit,不过不是很详细,这 ... -
JsUnit详解——《ajax基础》笔记(二)
2009-10-20 22:38 2478使用标准/定制查询串 如此说来,测试运行工具是很强大的,但是 ... -
JsUnit详解——《ajax基础》笔记(一)
2009-10-20 19:57 2531JsUnit与JUnit对比 JsUnit也有setUp() ... -
使用Firefox的Web开发插件
2009-10-18 17:53 1431Firefox的Web开发插件为Firefox浏览器增加了大量 ... -
9、访问WEB服务(REST)——ajax基础笔记
2009-10-18 17:24 3972最其名的WEB服务实现是S ... -
8、读取响应头部——ajax基础笔记
2009-10-18 17:20 6707你有时可能需要从服务器获取一些内容,例如,可能想“ping”一 ... -
7、使用JSON向服务器发送数据——ajax基础笔记
2009-10-18 17:20 5132看过前面的例子后(使用XML向服务器发送复杂的数据结构),你可 ... -
6、请求参数作为XML发送——ajax基础笔记
2009-10-18 17:20 1716如果只是使用一个包含 名/值 对的简单查询串,这可能不够健壮, ... -
4、将使用W3C DOM动态生成页面——ajax基础笔记
2009-10-18 17:19 1355使用W3C DOM动态生成页面 dynamicContent ... -
3、将响应解析为XML——ajax基础笔记
2009-10-18 17:18 1010将响应解析为XML parseXML.xml清单: < ... -
2、使用innerHTML属性创建动态内容——ajax基础笔记
2009-10-18 17:17 1863使用innerHTML属性创建动态内容 如果结合作用HTML ... -
1、使用XMLHttpRequest对象——ajax基础笔记
2009-10-18 17:17 1976XMLHttpRequest最早是在 IE5 中以active ... -
30、JavaScript代码优化
2009-10-16 21:25 1516JavaScript代码的速度被分成两部分:下载时间和执行速度 ... -
JavaScript代码优化(二)
2009-10-16 01:32 1151◆字符串的使用 在IE6和IE7中因字符串级联导致的主要问题 ...
相关推荐
14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript函数 14.16 购物篮中常用的计算总价效果 ...
第1章 页面特效 1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 ...22.15 用prototype实现JavaScript的继承 22.16 JavaScript制作哈希表 第23章 其他技巧及特效 23.1 ...
摘要:脚本资源,Ajax/JavaScript,下拉框 QUI网页界面集成框架(原UUR框架)是一套完整的BS模式系统界面解决方案。提供给设计和开发WEB应用的人员使用。适合用于自动化办公、电子政务和RIA应用等系统的开发中。 ...
摘要:脚本资源,Ajax/JavaScript,下拉框美化 jQuery MultiSelect 下拉多选菜单jquery代码,用jQuery重新定义和美化的漂亮Select下拉框,并增强了功能,在Select内还有单癣复选框的功能。还可对数据分组、过滤等。
(2)判断出错的地方,此地方是不是因为框架没有选对呢。例如:原本的框架为frame1,现在执行的操作在frame2时,此时要怎样处理? 加上以下两条语句:selectFrame. relative=up, selectFrame. frame2Locator; 26....
摘要:脚本资源,Ajax/JavaScript,表单美化,NiceForms ...使用niceforms.js表单美化控件,可对表单控件的文本框、下拉框、单选按钮、复选按钮、文本域、文件域、提交按钮等常用元素进行风格美化,最终效果相当漂亮。
[增强]自定义下拉框、选项卡和多选框显示方式和多选分隔符 [更改]删除广告位时删除对应广告, 删除链接分类时删除对应链接 [更改]默认模板登录页添加广告 [增强]内链允许随机读取,自定义内链条数 [更改]重置菜单...
EditPlus 的键盘记录有些类似于 UltraEdit 的宏操作,不过功能相对单一,录制的文件可编辑性较差。 由于基本无法编辑录制的文件,所以录制的时候为了避免录制失败,推荐纯粹使用键盘操作,以下是比较关键的几个键盘...
EditPlus 的键盘记录有些类似于 UltraEdit 的宏操作,不过功能相对单一,录制的文件可编辑性较差。 由于基本无法编辑录制的文件,所以录制的时候为了避免录制失败,推荐纯粹使用键盘操作,以下是比较关键的几个键盘...