사용자가 "제출"을 클릭하면 먼저 선택한 사용자 이름이 이미 사용되었는지 확인하고 싶습니다. 나는 이것에 대한 아약스를 사용아약스 호출 대기 없음
function submit() {
if (userNameTaken()) {
alert("Please choose a username that is not already in use.");
return false;
}
}
function userNameTaken() {
var taken = false;
var username = $("#username").val();
$.get("username_used.cgi", { "username": username }, function(data) {
taken = data > 0;
});
return taken;
}
그래서 나는 이름을 촬영할 때, 기능 userNameTaken()
가 true를 돌려 않는다는 것을 알고있다.
그러나 양식은 마치 자바 스크립트가 일시 중지하지 않고이 아약스 호출이 끝나기를 기다리지 않고 마치 계속 진행되고 계속 평가됩니다. 내 양식이 아약스 전화를 기다리고 제출하지 않도록이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
사용자가 단순히 입력 필드 중 하나에 엔터를 치면 폼은 기꺼이 바이 패스 검증을 제출하게됩니다. –
IE를 제외한 모든 브라우저에서 제출 버튼없이 제출이 작동한다는 점을 알아야합니다. http://jsfiddle.net/liho1eye/cdwqs/를 사용해보십시오. 대답은 적절하지만 심각하게 결함이 있습니다. 버튼에 액션을 제출하지 마십시오. 게시 한 링크의 명확하고 위험한 오답에 대한 섹션을 참조하십시오. –
: P 감사합니다.하지만이 이벤트는 keyup 및 preventDefault를 사용하면 쉽게 예방할 수 있습니다. 또한 대답이 정확하고 OP에 도움이된다는 것을 알 수 있으므로 중요하지 않습니다. –