2016-09-18 231 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