"city"입력 필드에서 jQuery 자동 완성 인스턴스 (v1.1)를 디버깅하고 있습니다.jQuery 자동 완성 : 사용자 입력에 문자가 없습니다.
자동 완성 데이터 바인딩은 필드 값 길이가 2 이상이고 값이 변경된 경우에만 필드의 keyup
이벤트에 설정됩니다.
데이터 바인딩, 힌트 목록 및 자동 완성이 올바르게 작동합니다. 하지만 뭔가 잘못되었습니다. 로그에서 나는 서버에 게시 된 도시 입력 값에 3 번 및 4 번 문자가 여러 번 빠져 있음을 알 수 있습니다. 몇 가지 예 :
"trpani" instead of "trapani"
"fienze" instead of "firenze"
"scndicci" instead of "scandicci"
"brdisi" instead of "brindisi"
"paermo" instead of "palermo"
"caliari" instead of "cagliari"
버그를 복제하는 데 성공하지 못했지만 우연히 만날 수는 없습니다. 세 번째 문자에서 오류가 발생합니다. 삽입하는 동안 자바 스크립트 처리 은과 키보드 버퍼가 충돌합니다.
그래서, 나는 생각하지만, 나는 사람들이 f i r e n z e
을 입력하지만, 결국 r
문자를 놓친, 입력의 마지막 값이 결국 서버에 게시 fienze
입니다 확실하지 않다.
무슨 일
질문? 왜 내가 오류를 복제하지 못합니까? 뭐가 잘못 되었 니?
/*
* here I store the previous value
*/
var storeCity;
$('#City').keydown(function(){
var val = $(this).val();
storeCity = (val.length >=2 ? val.substring(0,2):"");
});
/*
* the autocomplete is set only if
* - the City value has changed compared to the storeCity value
* - the City value has lenght at least 2
* - remark: using the keypress does not solve the issue
*/
$('#City').keyup(function(){
var val = $(this).val();
if(val.length>=2 && val.substring(0,2)!=storeCity){
getLocations('#City');
}
});
function getLocations(cityId){
var hint = $(cityId).val().substring(0,2);
$.ajax({
type: "GET",
url: "/include/getLocations.asp",
data: ({location : hint}),
async: false,
error: function() {},
success: function(dataget) {
var result = dataget.split("\n");
$(cityId).flushCache();
$(cityId).autocomplete(result, {
pleft: 100px,
minChars: 2,
matchContains: true,
max: 3000,
delay: 100,
formatItem: function(row){...},
formatMatch: function(row){ return row[0]; },
formatResult: function(row){ return row[0]; }
});
$(cityId).result(function(event,data){...});
}
});
}
보인다 ur 논리 구현은 storeCity가 getLocations()에 대한 첫 번째 호출에서 항상 빈 문자열과 같습니다. keydown 콜백 함수로 설정했기 때문입니다. Keypress를 대신 사용해보십시오. 항상 키 누르기 전에 호출됩니다. –
아니요, 테스트했지만 문제가 해결되지 않았습니다. –
자동 완성 위젯을 올바르게 사용하지 않습니다. 당신은'input'에 한 번 적용해야합니다. –