2017-08-08 6 views
0

少なくとも1つのチェックボックスが選択されているかどうかをチェックし、フォーム(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

データを処理するときにあなたのJS関数のreturn値の操作を行うことができます提出

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

上のフォームにイベントを追加する必要が

<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

をノーチェックボックスのされている場合チェックされたpreventDefault。これにより、フォームの送信が停止します

+0

'document.getElementsByName'コードを現在のjavascriptの下に追加しました。立ち入り禁止。私は間違った場所に置いていますか? – testing123

+0

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

+0

@ user5753132のように、あなたは関数の外に追加する必要があると言いました – y0hami

関連する問題