2010-06-02 3 views
0

사용자가 고유 식별자를 입력하는 입력 필드가있는 양식이 있습니다. 그런 다음 사용자가 입력 필드 (흐림)에서 벗어나 이동할 때 파트에 대한 세부 정보를 가져 와서 페이지의 일부 필드를 채우는 jQuery 코드가 있습니다. 문제는 사용자가 입력 필드 밖으로 나가기 전에 제출 버튼을 클릭하여 jQuery 코드가 데이터를로드하고 필요한 필드를 채울 기회가 없다는 것입니다. 이 일을하는 가장 좋은 방법은 무엇일까요? 나는 아마도 몸에 초점을 맞추고 채워야 할 모든 필드가 채워질 때까지 페이지를 계속 확인하는 무한 루프를 가졌다 고 생각했지만, 이벤트 기반 솔루션이 예측할 수없는 무한 루프보다 낫다고 느꼈다. 어떤 아이디어?양식 입력을 선택 취소하고 제출하기 전에 함수를 기다리는 중

답변

4

양식을 onsubmit 이벤트로 지정하십시오.

모든 양식 필드가 올바르게 채워지지 않는 한 해당 이벤트는 false을 반환합니다. jQuery에서

:

$("#formname").submit(function() 
{ if (condition_not_met) return false; }); 

이 모든 것이 제자리에까지 제출에서 양식을 차단합니다.

블로킹은 자바 스크립트가 비활성화되면 작동하지 않지만 Ajax를 사용하여 올바른 필드를 가져 오는 것은 문제가되지 않습니다.

+0

이것은 간단한 해결책의 일종입니다. 나는 이것에 대해 생각했지만 사용자가 제출 버튼을 다시 클릭 할 필요가없는 약간 더 간소화 된 솔루션을 원했습니다. – blcArmadillo

+0

@blcArmadillo 쉬운 : 위의 함수가 조건을 충족시키지 않으면 'submitWhenPossible = true' 플래그를 설정하십시오. 해당 플래그에 대한 Ajax 성공 콜백 검사를 수행하고, true로 설정된 경우 프로그래밍 방식으로 제출하십시오.'$ ("# formname"). submit();'JS에서 무한 루프를 사용하지 마십시오. . 그러나 지연된 제출은 버튼을 클릭 할 때 사용자가 일부 브라우저 활동 (throbber starting, page changing ...)을 보는 데 사용되므로 혼란을 야기 할 수 있습니다. 이 관점에서 볼 때 좋은 아이디어인지는 모르겠지만 시도해보십시오. –

0

나는 당신이 blur 함수에서 ajax 호출을하고 있다고 생각하고 있는가? 제출 단추 (페이지로드 또는 흐림)를 비활성화 한 다음 ajax 콜백에서 활성화 할 수 있습니까?

관련 문제