2012-03-01 4 views
7

을 사용하여 제출하지 않을 것이다 - 그것은 형태처럼 보인다 jQuery on submit validation, with modal dialog at the end?jQuery를 - 양식은 여기 내 문제 또한 jQuery를

단순히 jQuery를 사용하여 제출하지 않습니다. 매우 단순화 된 레벨의 코드는 다음과 같습니다.

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $(document).click(function() { 
      $('#inputform').submit(); 
     }); 

     $("#inputform").submit(function() { 
      alert('test'); 
      return true; 
     }); 
    }); 
</script> 

<form method="POST" action="<?php echo CURRENT_PAGE ?>" id="inputform"> 

<button type="submit" name="submit" id="submit">Submit form</button> 

</form> 

본문을 클릭하면 '테스트'경고가 표시되지만 양식은 제출하지 않습니다. 또한 경고 상자를 닫으면 다시 클릭해도 다시 나타나지 않습니다.

제출 버튼을 클릭하기 만하면 알림이 표시되고 예상대로 양식이 제출됩니다.

정말 멍청한 질문인데 죄송합니다.하지만 저는 여기를 잃었습니다. 타이!

+0

'$ ("# inputform")을 제거하십시오. (function() {return true;}), ' – mgraph

+0

@ tj - 죄송합니다! 나는 그것을 추가하려고했지만 위의 포맷을 망쳐 놓았다. @ mgraph - 고맙습니다.하지만 여기에 많은 검증이 있습니다. –

답변

22

문제는 제출 버튼에 "제출"이라는 이름을 지정했기 때문입니다. 그것을 다른 무엇으로 바꾸면 작동 할 것입니다. (또한없는 이상 some browser issues의 때문에, 같은 그들을 유지하기 위해 가장 id 변경할 수 있습니다.)

이유 : 폼 요소는 당신이 그들을 제출 호출 할 수있는 기능입니다 submit라는 속성이 있습니다. (jQuery는 jQuery 인스턴스에서 submit을 호출 할 때 커버를 사용합니다.) 그러나 폼 요소 은 필드의 이름을 사용하여 양식의 각 필드에 대한 속성을 수신하므로 "제출"필드가있는 경우 submit 함수보다 우선합니다. 따라서 프로그래밍 방식으로 양식을 제출할 수 없습니다.

예제 : Live copy |

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $(document).click(function() { 
      $('#inputform').submit(); 
     }); 

     $("#inputform").submit(function() { 
      alert('test'); 
      return true; 
     }); 
    }); 
</script> 

<form method="GET" action="http://jsbin.com/uwuzon" id="inputform"> 
<input type="text" name="foo" value="bar"> 
<button type="submit" name="someOtherName" id="someOtherName">Submit form</button> 
</form> 

Live source은 (유의 한 변화는 name="someOtherName" id="someOtherName" 부분이 JSbin에서 작동 단지 있도록이다 [폼의 행동과 방법을 변경] 다른 변경..)

사이드 참고 : 당신은 필요 없어 양식 제출을 허용하는 submit 이벤트 처리기의 return true;이 아니라return false;이 아닙니다. :-)

+0

이것은 완벽하게 작동합니다. 정말 고마워요! 제출의 이름과 ID가 너무 많은 문제를 일으킬 것이라는 것을 결코 알지 못했습니다. $ –

+0

@xndx :-) 좋은 거래, 도움이 된 것을 기쁘게 생각합니다! –

+1

그래, 방금이 버그/기능을 디버깅하는 데 거의 한 시간을 보냈다. –