js 사용자 정의 연동 드 롭 다운 상자

이 드 롭 다운 테 두 리 는 이미 아름 다운 수 요 를 만족 시 킬 수 있 을 것 같다.
 
이것 은 점 을 찍 은 효과 입 니 다.키보드 의 방향 키,리 턴,esc 등 사건 을 썼 고 페이지 의 아래쪽 거리 에 따라 위로 보 여 주 는 지 여 부 를 판단 할 수 있 습 니 다.
오늘 연 결 된 것 을 만 들 었 는데,아울러 일부 코드 를 붙 였 다.
효과 미리 보기:
 
 아래 코드 는 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>
이 세 조각 은 부분 일 뿐 이지 만 시간 이 많이 걸 리 는 다른 코드 는 문제 가 있 는 메 시 지 를 붙 이지 않 았 다.

좋은 웹페이지 즐겨찾기