插件的ui挺好的
回答下几个问题(ps:我做后端的,对原生js不是很精通,写的不好谅解):
1.怎么初始化默认值:
看了下代码,貌似没这个功能,所以需要改插件
把verseect文件的第33行左右的defa_text赋值和defa_value赋值语句改成:
var defa_value = it.value; var thoptions = it.querySelectorAll("option[value]"); var defa_text = it.querySelector("option").innerText; [].forEach.call(thoptions, function(option) { if (option.getAttribute("value") == defa_value) { defa_text = option.innerText; } });
2.解决搜索框删除所有搜索内容后下拉框消失的问题:
把
items.classList.toggle("verSelector-focus-show"); if (!items.classList.contains("verSelector-focus-show")) return false; 替换成 if (!items.classList.contains("verSelector-focus-show")) { items.classList.add("verSelector-focus-show"); }
3.如何获取选中的值
$('.verSelector-input-list>input[name=这里写原来select的name值]').val();
var option = function() { document.onclick = function(e) { var target = e.target; //判断是否是下拉选框点击事件 if (target.classList.contains("verSelector-one")) { var op = e.target.parentElement.parentElement.previousElementSibling.childNodes; //-->真正获取option的列表 if (target.classList.contains("verSelector-text") || target.classList.contains("verSelector-caret")) { target = target.parentElement; } var parent = target.parentElement; _s(parent); show_options(target, op); //-->多传一个参数给显示的方法 } else if (target.classList.contains("verSelector-two")) { return true; } else { _s(); } e.stopPropagation(); } };
var show_options = function (tar, op) {}在这个方法里面循环op就可以了 不用他的option
[].forEach.call(op, function (i) {} var keyup_search = function () {}里同样修改 增加 op并传参 op = ops.previousElementSibling.childNodes; show_options(this.parentElement.parentElement,op);