html搜索框如何加下拉框,js实现带搜索功能的下拉框
本⽂实例为⼤家分享了js实现带搜索功能的下拉框,供⼤家参考,具体内容如下
1、介绍
在实现下拉框的时候,如果⽤select+option可以在满⾜pc端的需求,但如果需应⽤到⼿机端,由于select的样式太丑。所以接下来利⽤div+p实现到输⼊⽂本的下拉框
2、思路
1 利⽤⼀个input充当搜索框,div+p充当下拉框放置于input的下⽅。如图所⽰:
2 接下来就是js的实现了,我们先把红⾊区域的div+p利⽤display:none隐藏起来。
对表单input添加onfocus事件,当input获取焦点的时候获取显⽰红⾊区域。
在对表单添加oninput事件,根据input的字段筛选出有关的p标签即可
3 对红⾊区域的div设置点击事件,利⽤事件委托将点击的p标签的值赋值到input上即可。
3、代码
*{
margin: 0;
padding: 0;
}
.search{
border: 1px solid transparent;
width: 400px;
height: 80px;
margin: 0 auto;
}
.search input{
border: 1px solid gray;
width: 200px;
height: 80px;
}
.content{
width: 200px;
/* height: 80px; */
border: 1px solid red;
overflow-y: auto;
max-height: 60px;
}
.content p {
height: 20px;
}
123
159
html下拉菜单的制作方法147
163
var dataarr = [];
var datalist = lementbyid('datalist');
function onload() { //初始化dataarr的数据
var childs = datalist.children; //在ie下注释也算节点,不能⽤于for (var i = 0; i < childs.length; i++) {
dataarr.push(childs[i].innertext);
}
console.log(dataarr);
}
function showdiv() {
datalist.style.display = "";
}
function filterp() {
var e = event.target || event.srcelement;
var str = e.value;
console.log(str);
datalist.innerhtml = ''; //清空div下的所有p元素
dataarr.foreach(function (item) {
if (item.indexof(str) != -1) {
var p = ateelement('p');
var text = atetextnode(item);
p.appendchild(text);
datalist.appendchild(p);
}
})
console.log("datalist.innerhtml:" + datalist.innerhtml)
if (datalist.innerhtml == '') {
var p = ateelement('p');
var text = atetextnode('暂⽆数据');
lor = '#d7d7d7';
p.appendchild(text);
datalist.appendchild(p);
}
}
function pushinput() { //利⽤事件委托机制,获取点击的p源
var e = event.target || event.srcelement;
var input = lementbyid('input');
input.value = e.innertext;
datalist.style.display = 'none';
}
/**
stopimmediatepropagation() 和 stoppropagation()的区别在哪⼉呢?
后者只会阻⽌冒泡或者是捕获。 但是前者除此之外还会阻⽌该元素的其他事件发⽣,但是后者就不会阻⽌其他事件的发⽣**/
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持萬仟⽹。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论