JavaScriptをいじっててハマったのでメモ。
onclickで「return false」が効かない時の対処法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function myCheck() { var j = 0; for (var i = 0; i < document.form1.elements.length - 1; i++) { if (document.form1.elements[i].checked) { j++; } } if (j < 2) { alert("項目が選択されていません。"); return false; } else { return true; } } |
jsの部分です。想定では、ダイアログが表示された時は、データをサーバに送らず処理をキャンセルするイメージでしたが、なぜかうまくいかん…。
1 | <button type="submit" onclick="myCheck();" value="送信"></button> |
対処法は「onclick」のとこを修正します。下のように「return myCheck();」に直したらいけました。
1 | <button type="submit" onclick="return myCheck();" value="送信"></button> |
どうやら<script>内に「return false」を書いても、イベントハンドラはfalseを認識しないようです。
そのため、イベントハンドラにreturnを明記することで解決できますよ!