默认下拉框:
<select>
<option value="">月份</option>
<option value="一月">一月</option>
<option value="二月">二月</option>
<option value="三月">三月</option>
<option value="四月">四月</option>
<option value="五月">五月</option>
</select>
若现在需要实现下拉并且可输入,需要对该下拉框进行初始化:
//$(document).ready(function() {
$(function() {
$('select').comboSelect();
});
注意:所有动态数据拼接需要先完成数据拼接,再进行下拉初始化
$("#appCode").append('<option selected="selected" value="'+data[app].appCode+'">'+data[app].appName+'</option>')
$('select.appCode').comboSelect();
原理分析:
在原来select框基础上添加一个input框实现输入
给一个纯js实现下拉可输入:
<div id = "click" ><input type="text" style="display: block;" name ="inputusername" id = "inputusername" onFocus="showselect()" onKeyUp="SelectTip(0)">
<select id = "username" style="display: none; float: left; position: absolute;" size = 10 onChange="setinputvalue()">
<option value = "select">请选择姓名</option>
</select>
</div>
/*显示select*/
function showselect(){
$("#username").css("display" ,"block");
$("#username").width($("#inputusername").width());
}
/*隐藏option*/
function hiddenselect(){
$("#username").css("display" ,"none");
}
/*点击select 时 将select的值在input中显示*/
function setinputvalue(){
//alert($("#username").val());
$("#inputusername").val($("#username").val());
hiddenselect();
}
var TempArr=new Array();//存贮option
function Init(){//获取所有options 将TempArr放入数组
$("#username option").each(function(){
TempArr.push($(this).val());
});
}
/*keyup事件调用 该方法,释放键盘按钮时 清空所有option 读取input内的值 与数组TempArr进行匹配
返回值大于-1时 在select 中追加option
*/
function SelectTip(flag){
var TxtObj=$("#inputusername");
var SelectObj=$("#username");
var Arr=new Array();
var match = /$("#username").val()/;
SelectObj.html("");
$.each(TempArr,function(index,element){
//alert(element);
console.info($("#inputusername").val());
console.info(element);
var result = element.indexOf($("#inputusername").val());
console.info(result);
if(result>-1){
SelectObj.append("<option value = '"+element+"'>"+element+"</option>");
}
});
}
/*在div之外的位置点击时隐藏select 在div内点击时 阻止事件上传到body */
$("#click").click(function(event){
event=event||window.event;
event.stopPropagation(); //阻止事件冒泡
});
$(document).ready(function(){
Init();
/* 设置select 位置*/
var pos = $("#inputusername").position();
var height = $("#inputusername").height();
pos.top = pos.top+height;
$("#username").position(pos);
});
给自己总结以下,感谢:https://blog.youkuaiyun.com/CHOUFENGDDDDDD/article/details/84747301