分享
 
 
 

用HTC来实现列表提示框

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

演示

定义

tipSrc 数据源 (XML文件)

tipLen 列表框长度 (数字)

inputCase 大小写 ("upper"或者"lower")

示例

<input type="text" name="textfield" style="behavior:url('htc/tip.htc')" tipSrc="vslnm.php" tipLen="15" inputCase="upper">

HTC文件

<!-- ---------------------------------------------------------------------

//

// File: tip.htc

// version: 1.0

// Description:下拉列表提示.

// author: 伍维波

//

//------------------------------------------------------------------------>

<PUBLIC:COMPONENT id="tip" urn="wwb:tip">

<PUBLIC:PROPERTY name="tipSrc" /> //数据源,XML文件

<PUBLIC:PROPERTY name="tipLen" /> //列表框长度

<PUBLIC:PROPERTY name="inputCase" /> //大小写

<PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="init()" />

<PUBLIC:ATTACH EVENT="onkeydown" ONEVENT="enterTip()" />

<PUBLIC:ATTACH EVENT="onkeyup" ONEVENT="showTip()" />

<script language="JavaScript">

var list=new Array(); //数据列表

var oInput; //目标对象

var oSelect; //列表框对象

var oDiv; //定位对象

/***初始化***/

function init()

{

loadData();

//alert(element.name);

ele=element;

oInput=ele;

oDiv=document.createElement("DIV");

var top = ele.offsetTop;

var left = ele.offsetLeft;

var width = ele.offsetWidth;

var height = ele.offsetHeight;

while(ele = ele.offsetParent)

{

top += ele.offsetTop;

left += ele.offsetLeft;

}

top = top + height;

oDiv.style.position="absolute";

//alert(left+"="+top);

oDiv.style.left=left;

oDiv.style.top=top;

oDiv.style.visibility="hidden";

//alert(left);

//alert(top);

oSelect=document.createElement("SELECT");

if(tipSrc!=null&&tipSrc!="")

{

oSelect.size=tipLen;

}

else

{

oSelect.size=10;

}

oSelect.onchange=function()

{

oInput.value=this.value;

}

oSelect.attachEvent("onkeydown",changeTip);

oSelect.attachEvent("onclick",selectTip);

oInput.insertAdjacentElement( "AfterEnd", oDiv);

oDiv.insertAdjacentElement("AfterBegin",oSelect);

return true;

}

/***装载数据***/

function loadData()

{

if(tipSrc!=null&&tipSrc!="")

{

var xmldom = new ActiveXObject('Microsoft.XMLDOM');

xmldom.async = false;

//alert(tipSrc);

xmldom.load(tipSrc);

root = xmldom.documentElement;

temp=root.selectNodes("//OPTION");

for(var i=0;i<temp.length;i++)

{

list[i] = temp[i].text;

}

return true;

}

else

return false;

}

/***显示列表提示框***/

function showTip()

{

//alert("KEYUP");

event.cancelBubble=true;

ele=event.srcElement;

if(inputCase!=null&&inputCase=="upper")

oInput.value = oInput.value.toUpperCase();

else if(inputCase!=null&&inputCase=="lower")

oInput.value = oInput.value.toLowerCase();

input=ele.value;

if(input==oSelect.value)

{

hideTip();

return true;

}

clear();

for(i=0;i<list.length;i++)

{

if(list[i].indexOf(input)==0)

{

oSelect.add(new Option(list[i],list[i]));

}

}

/*

for(var i=0;i<list.length;i++)

{

var oOption=document.createElement("OPTION");

oOption.text = list[i];

oSelect.options.add(oOption);

}

*/

//ele.insertAdjacentElement( "AfterEnd", oDiv);

//oDiv.insertAdjacentElement("AfterBegin",oSelect);

oDiv.style.visibility="visible";

oSelect.selectedIndex=0;

return true;

}

/***按键操作***/

function enterTip()

{

//alert("KEYDOWN");

//alert(oInput);

kc=event.keyCode;

if(oDiv.style.visibility!="hidden")

{

if(kc==13)

{

selectTip();

}

else if(kc==40)

{

oSelect.focus();

}

}

}

/***改变列表项***/

function changeTip()

{

kc=event.keyCode;

if(oDiv.style.visibility!="hidden")

{

if(kc==13)

{

selectTip();

}

if(kc==40)

{

oInput.value=oSelect.value;

}

}

}

/***选择列表项***/

function selectTip()

{

oInput.value=oSelect.value;

oInput.focus();

hideTip();

}

/***隐藏列表提示框***/

function hideTip()

{

oDiv.style.visibility = "hidden";

}

/***删除列表项***/

function clear()

{

for(var i=oSelect.options.length-1;i>=0;i--)

{

oSelect.options.remove(i)

}

}

</script>

</PUBLIC:COMPONENT>

数据源

XML文件的格式如下

<?xml version="1.0" encoding="GB2312"?>

<LIST>

<OPTION>208</OPTION>

<OPTION>207</OPTION>

<OPTION>206</OPTION>

<OPTION>205</OPTION>

<OPTION>204</OPTION>

<OPTION>203</OPTION>

<OPTION>202</OPTION>

<OPTION>201</OPTION>

<OPTION>200</OPTION>

<OPTION>199</OPTION>

</LIST>

也可以用PHP来生成XML的示例

<?php

header("Content-type: text/xml");

echo '<?xml version="1.0" encoding="GB2312"?>';

require_once("../lib/quotation.php");

$Quotation=new Quotation();

$Str=$Quotation->createVslNm();

echo $Str;

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有