可输入下拉列表框

本文介绍了一个可增强HTML下拉框组件的功能,通过简单的JavaScript脚本实现对标准下拉菜单增加“手工输入”选项。当用户选择“手工输入...”后,下拉框将转换为文本输入框供用户输入自定义选项。

/****************************
@说明 : 可输入下拉框组件
@Date : 2009-05-16

使用方法:
<select onmouseover="ConvertToCombSelect(this)" onchange="CombSelectChange(this)">
</select>
****************************/


/**
* 给指定下拉框添加"手工输入"功能。
*/
function ConvertToCombSelect(selectObj){
if(selectObj.id == null || selectObj.id == ''){
selectObj.id = selectObj.name + "_combId";
}
if(selectObj.lastChild.innerText != '手工输入...'){
var opt = document.createElement("OPTION");
opt.value = "手工输入...";
opt.innerText = "手工输入...";
opt.style.background = "green";
selectObj.appendChild(opt);

var combSpan = document.createElement("SPAN");
combSpan.id = "combSelectSpan";
selectObj.parentNode.appendChild(combSpan);
}
}


/**
* onchange事件
* @param selectObj
* @return
*/
function CombSelectChange(selectObj){
if(selectObj.value == '手工输入...'){
$('combSelectSpan').innerHTML = '<input type="text" id="combSelectText" onblur="CombSelectToSelectMode(\''+selectObj.id+'\',this.value)" class="text" style="display:none;"/>';

var modelText = $('combSelectText');

selectObj.style.display = "none";
modelText.style.display = "block";
modelText.value = '';
modelText.focus();
}
}

//切换到选择
function CombSelectToSelectMode(selectObjId , textValue){
var selectObj = $(selectObjId);
var combText = $('combSelectText');
selectObj.style.display = "block";
combText.style.display = "none";
$('combSelectSpan').innerHTML = '';

if(textValue != ''){
selectObj.removeChild(selectObj.lastChild);

var opt = document.createElement("OPTION");
opt.value = textValue;
opt.innerText = textValue;
opt.selected = true;
selectObj.appendChild(opt);

var opt = document.createElement("OPTION");
opt.value = "手工输入...";
opt.innerText = "手工输入...";
opt.style.background = "green";
selectObj.appendChild(opt);

}else{
selectObj.value = '';
}

selectObj.focus();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值