2016-09-18 229 views
0

我想檢查是否至少有一個複選框,在點擊提交按鈕後檢查表單中,如果沒有,用戶應該得到消息和表單不應該提交,所以我寫了這樣的代碼:防止表單被提交 - jQuery的

jQuery(document).ready(function ($) { 
    $('#price_quote_create_invoice').click(function() { 
     $('.price-quotes-table input[type="checkbox"]').each(function() { 
      if ($(this).is(':checked')){ 
       $('#post').submit(); 
       return false; 
      } else { 
       alert("You didn't chose any checkbox!"); 
       return false; 
      } 
     }) ; 
    }); 
}); 

但是,當我按下確定的警告框後,表單確實提交。

任何想法爲什麼會發生這種情況?

回答

1

你的代碼幾乎是正確的。

您在點擊事件中返回false,但您真正想要做的是停止提交事件。

這樣的變化。

$('#yourFormId').submit(function(){ 
    if (!$(this).find('input[type="checkbox"]:checked').length) { 
    alert("You didn't chose any checkbox!"); 
    return false; 
    } 
}); 
+0

所以。提交表單 - >防止提交('e.preventDefault();') - >檢查是否行使並顯示警報。你確實意識到表單現在永遠不會被髮送,對吧? – icecub

+0

是的,你說得對。我只是編寫了這些行太快。我的錯。謝謝 – Robiseb

0
alert('You didn't chose any checkbox!'); 

您的警報額外的逗號..

+0

這只是爲了這個問題,我編輯這個 – Avishay28

0

您可以使用event.preventDefault()做到這一點。 event是您的click函數的第一個參數。 Reference