下拉列表长度

14 篇文章 0 订阅
写了一个带设置下接列表长度的下拉框,想封装成一个JS控件,目前还是半成品,希望有人能改进
使用方法
input type="text" id="aa" onClick="sel(this)">
funtion sel(obj)
{
onSel(obj,listjson);//调用onSel(obj,value)方法,listjsonn是json串,是下拉列表的数据
}
input type="text" id="aa" >是下拉列表的text值 input type="hidden" id="valueaa">是下拉列表的value值,点拉下拉列表时生成的,命名:value+text的id
------js文件-----
document.writeln("
position:absolute; left:?px; top:?px; width:?px; height:?px; z-index:1; visibility:hidden/">
");
var valueId = '';//对应放value值的一个hidden控件id名
var signNum = 7;//显示7条数据
function onSel(val,listJson)//listJson是json串,是下拉列表的数据
{
valueId = 'value' + val.id;
_SetTime(val);

var num = listJson.length;
var str = '';
for(i=0;i
{
text = listJson[i].value;
value = listJson[i].key;
str = str+'
'+text+'
';

}
document.getElementById("_contents").innerHTML = '
';
// document.getElementById("_contents").innerHTML = '
'
document.getElementById("ops").innerHTML=str;
var unitHigh = 17;//17为一行数据的高,一行数据的高/options样式字体大小=1/(0.8或者0.7)
var high = unitHigh*num - num ;//减num是调整位置
if(num>signNum)
{
high = signNum * unitHigh - signNum;//减signNum是调整位置
}
document.getElementById("listdiv").style.height = high;
document.getElementById("_contents").style.width = val.offsetWidth-6;
document.getElementById("_contents").style.display="";

}

function _SetTime(tt) {

var ttop = tt.offsetTop; //TT控件的定位点高
var thei = tt.clientHeight; //TT控件本身的高
var tleft = tt.offsetLeft; //TT控件的定位点宽

while (tt = tt.offsetParent) {
ttop += tt.offsetTop;
tleft += tt.offsetLeft;
}

document.getElementById("_contents").style.top = (ttop + thei +2)+"px";
document.getElementById("_contents").style.left = tleft+"px";
document.getElementById("_contents").style.visibility = "visible";
}

function moveon(obj,objtext,objin){
obj.style.background="#0066CC";
obj.style.color = "#FFFFFF";
obj.style.border= 1;
document.getElementById(objin).onblur ="";
}
function out(obj,objtext,objin){
obj.style.color = "";
obj.style.background="";
document.getElementById(objin).focus();
document.getElementById(objin).onblur =function anonymous(){leave(objtext);};

}
function divmoveon(objtext,objin){
document.getElementById(objin).onblur ="";
}

// function divout(objtext,objin){
// document.getElementById(objin).focus();
// document.getElementById(objin).onblur =function anonymous(){leave(objtext);};
//}

function selected(textobj,obj,divobj){
// document.getElementById(textobj).value=obj.firstChild.nodeValue;
document.getElementById(textobj).value=obj.innerHTML;
document.getElementById(divobj).style.display="none";
document.getElementById(valueId).value = obj.id;
}
function leave(divobj){
document.getElementById(divobj).style.display="none";
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

meteor_730

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值