js 自定义的联动下拉框
js 自定义的联动下拉框
发布时间:2016-12-30 来源:查字典编辑
摘要:觉得这个下拉框已经稍微能满足美观需求了,这个是点出来的效果,写了键盘的方向键,回车,esc等事件,并且能根据页面的底部距离判断是否向上展示今...

觉得这个下拉框已经稍微能满足美观需求了,

js 自定义的联动下拉框1

这个是点出来的效果,写了键盘的方向键,回车,esc等 事件, 并且能根据页面的底部距离判断是否向上展示

今天弄了个联动的,顺便贴部分代码

效果预览:

js 自定义的联动下拉框2

以下代码解决了ie6的兼容问题

复制代码 代码如下:

$containerDivText.mousedown(function() {

setTimeout(

function() {

if ($newUl[0].style.display == 'block') {

$newUl.hide();

positionHideFix();

return false;

}

$containerDiv.focus();

//show list

$newUl.slideDown(100);

positionFix();

//when keys are pressed

document.onkeydown = function(e) {

if (e == null) { // ie

var keycode = event.keyCode;

} else { // everything else

var keycode = e.which;

}

//enter key or esc key pressed, hide list

if (keycode == 13 || keycode == 27) {

$newUl.hide();

positionHideFix();

return false;

}

}

}, 1);

//the function settimeout is used for ie6, because if you click the element where you hava focused on the element,

//ie6 would think you click it twice(2010-2-4)

});

以下代码解决了下拉框事件定义功能匮乏问题

代码

复制代码 代码如下:

if (!opts.callbackfn) {

$newLi.click(function(e) {

var $clickedLi = jQuery(e.target),

text = $clickedLi.text();

//update counter

currentIndex = $newLi.index($clickedLi);

//remove all hilites, then add hilite to selected item

$newLi.removeClass('hiLite');

$clickedLi.addClass('hiLite');

setSelectText(text);

$newUl.hide();

$containerDiv.css('position', 'static'); //ie

});

} else {

$newLi.click(function(e) {

var $clickedLi = jQuery(e.target),

text = $clickedLi.text();

//update counter

currentIndex = $newLi.index($clickedLi);

//remove all hilites, then add hilite to selected item

$newLi.removeClass('hiLite');

$clickedLi.addClass('hiLite');

setSelectText(text);

$newUl.hide();

$containerDiv.css('position', 'static'); //ie

(opts.callbackfn)(this.value);

});

} //param callbackfn means you can define a event function from every li in the ul;(2010-2-4)

然后是页面的应用,

代码

复制代码 代码如下:

<script type="text/javascript">

jQuery(document).ready(function() {

jQuery("#my-dropdown2").hide();

jQuery('#my-dropdown1').sSelect(

{ defaultText: "",

callbackfn: function(value) {

if (value == 1) {

jQuery("#my-dropdown2_list").parent().remove();

jQuery("#linkc_value").val(value);

return;

}

jQuery.getJSON(

'/Department.mvc/GetSubDepartment?DepartmentID=' + value,

function(list) {

jQuery("#my-dropdown2_list").parent().remove();

jQuery("#my-dropdown2").html("");

var temp = "";

temp += "<option value=''>请选择部门</option>";

for (var i = 0; i < list.length; i++) {

temp += "<option value=" + list[i].DepartmentID + ">" + list[i].DepartmentName + "</option>";

}

jQuery("#my-dropdown2").html(temp);

jQuery("#my-dropdown2").show();

jQuery('#my-dropdown2').sSelect({

callbackfn: function(value) {

jQuery("#linkc_value").val(value);

}

});

}

);

}

}

);

// killErrors = function(){ return true; }

// window.onerror = killErrors;

});

function linkc() {

location.href = "/User.mvc/Front?DepartmentID=" + jQuery("#linkc_value").val();

}

</script>

这三块只是部分

但是花的时间较多 其它代码不贴了 有问题留言吧。。。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类