2017-08-08 176 views
0

我有一些代码检查是否至少选中了一个复选框,然后提交表单(MailChimp)。我的问题是我不知道如何阻止MailChimp提交,如果它发现没有选中复选框。现在它显示警报,然后提交表单......无论如何......没有什么帮助。使用所需的复选框验证来阻止表单提交

<form onsubmit="valthis()" action="//mailchimp form" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> 

// form html 

     <script>function valthis() { 
var checkBoxes = document.getElementsByClassName('myCheckBox'); 
var isChecked = false; 
    for (var i = 0; i < checkBoxes.length; i++) { 
     if (checkBoxes[i].checked) { 
      isChecked = true; 
     }; 
    }; 
    if (isChecked) { 
     alert('At least one checkbox is NOT checked!'); 
     } 
}</script> 

<input type="submit" value="Subscribe to notifications" name="subscribe" id="mc-embedded-subscribe" class="button"> 

回答

0

处理数据时你可以做return你的JS函数的值:

<form onsubmit="return valthis()" action="//mailchimp form" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> 

<script> 
function valthis() { 
    var checkBoxes = document.getElementsByClassName('myCheckBox'); 
    var isChecked = false; 

    for (var i = 0; i < checkBoxes.length; i++) { 
     if (checkBoxes[i].checked) { 
      isChecked = true; 
      break; //don't need to continue the loop once a checkbox was found 
     } 
    } 

    if (!isChecked) { 
     alert('At least one checkbox is NOT checked!'); 
     return false; 
    } 

    return true; 
} 
</script> 

<input type="submit" value="Subscribe to notifications" name="subscribe" id="mc-embedded-subscribe" class="button"> 
1

您需要添加事件对表单提交

document.getElementsByName("subscribe").onsubmit(function(event) { 
    if(!isChecked) { //If not checked 
     event.preventDefault(); // stops the form submitting 
    } 
}); 

如果没有复选框的是检查preventDefault。这停止提交表格

+0

我在当前javascript下添加了'document.getElementsByName'代码。不行。我把它放在错误的地方? (){ – testing123

+0

'function valthis(){ var checkBoxes = document.getElementsByClassName('myCheckBox'); var isChecked = true;对于(var i = 0; i testing123

+0

像@ user5753132表示你需要将它添加到函数之外 – y0hami