2012-09-05 2 views
0

다음 스크립트를 사용하여 제출중인 양식을 방지하려고 시도하지만 항상 그렇지 않습니다. 나는 심지어 문서로드시 preventDefault()을 시도했지만 작동하지 않습니다.jQuery 양식 제출 스크립트가 작동하지 않습니다.

$("form").submit(function() { 
     if ($("input").eq(3).val() == $("input").eq(4).val()) { 
      $("span").text("Validated...").show(); 
     return true; 
     } 

     $("span").text("Passwords do not match!").show().fadeOut(1000); 
     return false; 
}); 
+0

'return true'을 입력하면 양식이 제출됩니다. 코드가 정상적으로 보입니다. –

+0

@KevinB 알아요? 그러나 그것은 효과가 없습니다! 내 서버/브라우저 (Chrome)에 문제가있을 수 있습니다. – MayTheSchwartzBeWithYou

+0

디버깅을 위해 두 경우 모두 false를 반환하고 어느쪽에 도달했는지 알기 위해 각각 alert 또는 console.log를 반환합니다. if 문의 조건문이 올바른 입력 요소를 선택하지 않는 것보다 많습니다. –

답변

0

를 반환하는 이유의 큰 설명이다 내가 뭔가를 찾았다 고 생각하되, 최선을 다하는 것은 터무니없는 일이다. 내 함수는 $ (document) .ready에있을 때 작동한다. 왜? 당신의 충고를 듣게되어 기쁩니다.

$(document).ready(function(){ 

$("form").submit(function() { 
     if ($("input").eq(3).val() == $("input").eq(4).val()) { 
      $("span").text("Validated...").show(); 
     return true; 
     } 

     $("span").text("Passwords do not match!").show().fadeOut(1000); 
     return false; 
}); 

}); 
1
$("form").submit(function(e) { 
     if ($("input").eq(3).val() == $("input").eq(4).val()) { 
      $("span").text("Validated...").show(); 
     } 
     else{ 
     $("span").text("Passwords do not match!").show().fadeOut(1000); 
     e.preventDefault(); 
     } 
}); 

당신은 작업을 취소 preventDefault()를 사용해야합니다. 익명 함수 호출에 추가 한 매개 변수 e에 유의하십시오.

+0

아직 제출 중입니다. 이상한 것들 ... 또한 'e'가 의미하는 것을 정교하게 해석 할 수 있습니까? – MayTheSchwartzBeWithYou

+0

jQuery 이벤트 핸들러에서'false'를 반환하면 이미'preventDefault()'가 발생합니다. 이것은 OP의 코드에서 제출 동작을 변경하지 않습니다. – jfriend00

+1

@Peter 유효성 검사 논리는 true로 평가되어야하므로'preventDefault()'행에 도달하지 않습니다. 'e'는 단지'event'의 줄임말입니다. 원하는 이름을 지정할 수 있지만 이벤트와 관련된 여러 속성을 포함하는 것은 이벤트 개체입니다. – Shmiddty

0

나의 제안, 또는 내가 일반적으로 이것에 대해 이동 방법은 다음과 같이이다 :

$("form").submit(function(e) { 
    e.preventDefault(); // form never fires unless I want it to 

    if(condition == true) { 
     $(this).submit(); 
    } else { 
     //Don't submit 
    } 
} 

Here가 preventDefault()가> I을 닫으려면이 위해서는 거짓

관련 문제