2012-02-03 2 views
3

양식이 있고 제출 프로세스를 재정의 할 jquery 코드가 있습니다. 그러나 작동하지 않으며 오류가 없습니다. 샘플 코드를 단순화했습니다. 오타를 만들지 않았 으면합니다.jQuery submit() - 양식 동작을 재정의하는 이벤트

코드에 어떤 문제가 있는지 알고 있습니까? 그것은 내가 경고()를받는 지점에 오지 않는다. click() 이벤트가 제대로 작동합니다.

ID를 양식에 설정하려고했습니다. 아직 아무것도.

사용 JQuery와-1.4.2.min.js

<form name="checkout_shipping" action="checkout.php" method="post"> 
    <div class="contentText"> 
     <table border="0" width="100%" cellspacing="0" cellpadding="2"> 
     <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 0); document.checkout_shipping.submit();"> 
      <td width="75%" style="padding-left: 15px;">Flat price</td> 
      <td>$8.00</td> 
      <td align="right"><input type="radio" name="shipping" value="flat_flat" onclick="this.form.submit();" /></td> 
     </tr> 
     <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 1); document.checkout_shipping.submit();"> 
      <td>Pick-up</td> 
      <td>$0.00</td> 
      <td align="right"><input type="radio" name="shipping" value="pickup_pickup" checked="checked" onclick="this.form.submit();" /></td> 
     </tr> 
     </table> 
    </div> 
    </form> 

    <script> 
    $('form[name=checkout_shipping]').submit(function(e) { 
     e.preventDefault(); 
     alert('Houston we have contact!'); 
     $.ajax({ 
     url: '/includes/checkout/payment.php', 
     data: false, // false for testing 
     type: 'POST', 
     cache: false, 
     async: false, 
     dataType: 'html', 
     error: function(jqXHR, textStatus, errorThrown) { 
      // ... 
     }, 
     success: function(data) { 
      // ... 
     } 
     }); 
    }); 
    </script> 

답변

4

양식을 제출하고있는 방법은 이벤트 handelers를 무시 확인할 수 있습니다. 대신

:

document.checkout_shipping.submit(); 

사용

$(this).closest('form').submit(); 

http://jsfiddle.net/6uZuS/

전체 코드를 참조하십시오 :

<form name="checkout_shipping" action="checkout.php" method="post"> 
    <div class="contentText"> 
     <table border="0" cellspacing="0" cellpadding="2"> 
      <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 0); $(this).closest('form').submit();"> 
        <td width="75%" style="padding-left: 15px;">Flat price</td> 
        <td>$8.00</td> 
        <td align="right"><input type="radio" name="shipping" value="flat_flat" onclick="$(this).closest('form').submit();" /></td> 
       </tr> 
       <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 1); $(this).closest('form').submit();"> 
        <td>Pick-up</td> 
        <td>$0.00</td> 
        <td align="right"><input type="radio" name="shipping" value="pickup_pickup" checked="checked" onclick="$(this).closest('form').submit();" /></td> 
       </tr> 
      </table> 
     </div> 
</form> 


<script type="text/javascript"> 
     $(document).ready(function(){ 
      $('form[name=checkout_shipping]').submit(function(e) { 
       e.preventDefault(); 
       alert('Got you!'); 
      }); 
     }); 
</script> 
+0

에로스가 없습니다. 작동하지 않았습니다. 그냥 양식을 제출하고 페이지를 다시로드합니다. 귀하의 예가 링크에서 트릭을 했음에도 불구하고. – tim

+0

나를 위해 일하는 JS Fiddle에서 HTML/스크립트를 복사했습니다. JSFiddle에서 코드를 테스트 했습니까? –

+0

나는 코드를 복사하고 ID를 명명했을 때 오타가 있었는데 오타가있었습니다. 그것은 효과가있다. 많이 sooo 감사합니다! 위. 나는 그것이 이벤트 우회 문제 일 뿐이라는 것을 결코 짐작하지 못했다. – tim

2

당신은 here또는

<form name="checkout_shipping" id="checkout_shipping" action="checkout.php" method="post"> 
    <div class="contentText"> 
     <table border="0" width="100%" cellspacing="0" cellpadding="2"> 
     <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 0);"> 
      <td width="75%" style="padding-left: 15px;">Flat price</td> 
      <td>$8.00</td> 
      <td align="right"><input type="radio" name="shipping" value="flat_flat" onclick="$(this).parents('form').submit();" /></td> 
     </tr> 
     <tr onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 1);"> 
      <td>Pick-up</td> 
      <td>$0.00</td> 
      <td align="right"><input type="radio" name="shipping" value="pickup_pickup" checked="checked" onclick="$(this).parents('form').submit();" /></td> 
     </tr> 
     </table> 
    </div> 
    </form> 
<script> 
$(document).ready(function(){ 
$('#checkout_shipping').submit(function(e) { 
     e.preventDefault(); 
     alert('Houston we have contact!'); 
}); 
}) 
</script> 
+0

없음 오류가 있지만 작동하지 않았다. 규칙적인 양식 활동은 내가 얻는 것입니다. 경고도, 아약스도 안돼. – tim

+0

테스트 링크를 확인 했습니까? http://jsfiddle.net/y6z3j/1/ –

+0

onclick 이벤트를'$ (this) .parents ('form'). submit();'또는'$ (this) .closest (' 양식 '). 제출();' –

관련 문제