2011-01-21 3 views
3

양식 필드의 유효성을 원격으로 확인하려고합니다. 페이지에있는 동안 필드가 포커스를 받으면 모든 것이 잘 작동합니다. 그러나 필드에이 수신되지 않으면 양식에 성공적으로 제출하려면 "제출"버튼을 두 번 클릭해야합니다.jQuery 원격 유효성 검사가 두 번 클릭하여 양식 제출

필드가 포커스를 받거나 양식 제출을 두 번 클릭하지 못하게하는 경우에만 유효성을 검사하고 싶습니다. 누구든지 아이디어가 있습니까?

$("#form1").validate({ 
    rules: { 
     project: { 
      required: true, 
      remote: "check.php" 
     } 
    }, 
    messages: { 
     project: { 
      required: "Required.", 
      remote: "Check Failed." 
     } 
    }, 
}); 

<input type="text" name="project" id="project" value="X"/> 
+0

혹시이 문제의 최하층에 도달 했습니까? – RubbleFord

+0

아니요, 아직 불행히도. –

+0

작동해야합니다. 샘플과 같이 하나의 입력 필드 만 사용해 보셨습니까? – Jules

답변

3

당신은 추가하여 문제를 해결할 수 있습니다

$.ajaxSetup({ 
    async: false 
}); 

유효성 검증 플러그인을 호출하기 전에.

8
Instead of making ajax setup to false you can just set "project" "remote" async to false like this 

$("#form1").validate({ 
    rules: { 
     project: { 
      required: true, 
      remote: {url:"check.php", async:false} 
     } 
    }, 
    messages: { 
     project: { 
      required: "Required.", 
      remote: "Check Failed." 
     } 
    }, 
}); 
+1

간단하고 완벽한. – alejoss

+0

비동기가 아닌 요청을하면 전체 UI가 고정 될 수 있습니다. 조심해. 확실히 @ Pé de Leão에서 대답하는 것이 더 낫다 –

5

제출 버튼의 이름은 무엇입니까? jQuery Validate는 "submit"이라는 이름을 좋아하지 않습니다. 제출 버튼의 이름을 "제출자"로 변경하고 문제가 사라졌습니다. https://github.com/jzaefferer/jquery-validation/issues/58

+1

나는 이것을 확인한다. 양식에 다른 필수 (필수) 필드가 포함되어 있으면 다른 솔루션 ("async : false"를 추가하는 것이 좋습니다)이 실제로 문제를 일으킬 수 있습니다. "async : false"일 경우, "required"필드는 무시되고 사용자는이를 무시하고 필드를 비워 둘 수 있습니다. 제출 단추 이름을 "제출자"로 바꾸면이 문제를 수정합니다. –

1

내가 원격 동일한 문제 및 가졌다 : {URL : "check.php", 비동기 : 거짓} 이 나를 위해 일을이 링크를 확인하세요.

관련 문제