(function($) {
var timeid;
var lastValue;
var options;
var c;
var d;
var t;
$.fn.autoComplete = function(config) {
c = $(this);
var defaults = {
width: c.width(), //프롬프트 상자의 너비는 기본적으로 텍스트 상자와 동일
maxheight: 150, //프롬프트 상자의 최대 높이
top: 6, //텍스트 상자의 상단 및 하단 거리
url: "", / /ajax 요청 주소
type: "post", //ajax 요청 유형
async: false, //비동기적으로 요청할지 여부
autoLength: 0, //텍스트 길이가 다음보다 큰 경우 서버에 요청 0
getValue: function(value){ }, //캐리지 리턴이나 마우스 클릭으로 값을 선택할 때 실행
clearValue: function(){ }, //재요청 시 값 지우기
getText: function(text){ } //캐리지 리턴 또는 마우스 클릭으로 값을 선택할 때 값이
}일 때 실행
options = $.extend(defaults, config); c.position();
d = $('
')
c.after(d)
d.css({ "왼쪽": p.left, "top": p.top c.height() 옵션 .top, "width": options.width, "max-height": options.maxheight }); ('
d.append(t)
d.append('');
c.bind("keydown", keydown_process );
c.bind("keyup", keyup_process);
c.bind("blur", Blur_process) ;
d.bind("focus", focus_div);
d.bind("mouseout", mouseout_div)
}
function Blur_process()
{
timeid = setTimeout (function(){
d.hide();
},200) ;
}
function mouseout_div()
{
t.find(".nowRow"). RemoveClass("nowRow");
}
function focus_div()
{
clearTimeout(timeid);
c.focus()
}
function keydown_process(e )
{
if(d.is(":hidden")){
return;
}
switch(e.keyCode)
{
case 38:
e.preventDefault();
var p = t.find(".nowRow ").prev()
if(p.length > 0){
d.setScroll(options. maxheight, p);
p.mouseover();
}else{
p = t.find("tr:last")
if(p.length > 0); 🎜>d.setScroll(options.maxheight, p);
p.mouseover() ;
}
}
break;
e.preventDefault();
var n = t.find(".nowRow").next();
if(n.length > 0){
d.setScroll(options.maxheight, n); n.mouseover();
}else{
n = t.find( "tr:first")
if(n.length > 0){
d.setScroll(options. maxheight, n);
n.mouseover();
}
break
case 13:
e.preventDefault(); find(".nowRow");
if(n.length > 0){
options.getValue(n.find("input:hidden").val())
c.val (n.text());
options.getText(c.val()) ;
lastValue = "";
d.hide();
break; >}
}
function keyup_process(e)
{
if(e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 13 || e.keyCode == 37 || e.keyCode == 39){
return;
}
if(c.val().length > options.autoLength){
if(c.val( ) == lastValue){
return; // 동일한 값에 대한 여러 요청을 피하기 위해 사용자가 입력하는 것을 고려하여 마지막 값과 같은지 확인
}
lastValue = c.val( ); //요청 값 기록
options.clearValue(); //값 지우기
getData (c, function(data){
if(data.length == 0){
d.hide();
return;
}
t.find("tr") .remove()
$.each(data, function(){
t.append ('' this.text ' |
'); >});
varrows = t.find("tr");
rows.mouseover( function(){
t.find(".nowRow").removeClass("nowRow");
$(this).addClass("nowRow");
});
click(function(){
options.getValue($(this).find("input:hidden) ").val());
c.val($(this).text());
options.getText(c.val());
lastValue = "";
d.hide();
});
d.show();
});
d.hide();
}
}
function getData(o,process )
{
$.ajax({
유형: options.type,
async: options.async, //동기화 제어
url: options.url,
data: o .attr("id") "=" o.val(),
dataType: "json" ,
캐시: false,
성공: 프로세스,
오류: function(err) {
alert(err);
}
}
$.fn.resetEvent = function()
{
c.bind("keydown", keydown_process)
c.bind("keyup", keyup_process)
c.bind("blur ", Blur_process);
d.bind("focus", focus_div);
d.bind( "mouseout", mouseout_div);
}
$.fn.setPosition = function()
{
var p = c.position();
d.css({ "left" : p.left, "top": p.top c.height() options.top })
}
$.fn.setScroll = function(h, o)
{
var offset = o.offset()
if(offset.top > h){
$(this).scrollTop(offset.top - h);
}else{
if(offset .top < 25){ //항목의 높이는 스타일 시트에 해당합니다. td height:25px
$(this).scrollTop(0);
}
}
}
})( jQuery);
#autoComplete_Group {
테두리: 1px solid #817F82 ;
위치: 절대;
overflow-x:hidden;
display:none; 배경: 없음 반복 스크롤 0 0
커서: 기본값;
너비: 100%
}
#autoComplete_Group td {
색상:
글꼴: 14px /25px arial ;
높이: 25px;
패딩: 0 8px;
}
#autoComplete_Group .nowRow {
배경색:#EBEBEB; >
코드 복사
코드는 다음과 같습니다.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31