写了一个带设置下接列表长度的下拉框,想封装成一个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("
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+'
}
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";
}
使用方法
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";
}