- ベストアンサー
チェックボックスとテキストフォームが両方空の場合はPOSTを不許可にしたい
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1810910 でご教示いただいたスクリプトに若干の機能追加です。 (1) テキストフォームに 値がある場合はチェックOFF 値がない場合はチェックON (2) テキストフォームに何か値があるのにチェックされた 場合は、テキストフォームの値はクリア、 以上までは、これまで当掲示板で教わったいろいろな サンプルで何とか実現できたのですが、 チェック=OFF、テキストフォーム=空 という状態が作れてしまうため この状態にsubmitボタンを押下した際は、 alert("チェックとテキストの両方が指定されていません"); のように、POSTを許可しないようにしたいです。 よろしくお願い致します。 <html> <head> <script language="JavaScript" type="text/JavaScript"> <!-- function checktext() { if(document.n0.n2.value.length){document.n0.n1.checked=false;} else{document.n0.n1.checked=true;} } function autoClear(f,cn,fl){ for (var i=0;i<f.elements.length;i++) { if (f.elements[i].className == cn) { f.elements[i].value = ""; } } } //--> </script> </head> <body> <form name="n0" id="0" action="" method="post"> <input type="checkbox" name="n1" id="1" onClick="autoClear(this.form,'n2',this.checked);" checked> <input type="text" name="n2" id="2" class="n2" onChange="checktext()"> <input type="submit"> </form> </body> </html>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<input type="submit"> を <input type="submit" onClick="if((n1.checked==false)&&(n2.value=='')) return false;"> に置き換えてみてください。 というか、checkboxのonClickに手を入れれば両方とも空にならなく出来そうですが・・・。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
なんか考えすぎな気がします。 このくらいにおさえておくのが現実的なんではないでしょうか? この場合n1とn2がともに未選択はないはずです。 ちょっとへんな動きもありますが、まぁそれはご愛嬌で。 <html> <head> <script language="JavaScript"> function checktext(num,cn) { num.form.elements[cn].checked=(num.value==""); } function autoClear(num,cn){ if(num.checked){ num.form.elements[cn].value = ""; }else{ num.form.elements[cn].focus(); } } </script> </head> <body> <form name="n0"> <input type="checkbox" name="n1" onClick="autoClear(this,'n2');" checked> <input type="text" name="n2" onBlur="checktext(this,'n1')"> <input type="submit" value="send"> </form> </body> </html>
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
function sendCheck(f){ if(!f.n1.checked && f.n2.value==""){ alert("チェックとテキストの両方が指定されていません"); return false; } else { return true; } } としといて <form name="n0" id="0" action="" method="post" onsubmit="return sendCheck(this)"> とする
お礼
BLUEPIXYさん、いつもご教示ありがとうございます。 動作の方も完璧です。#1さんのように 違って外部ファイルにもてるのがいいですね。 (無論、#1さんのもそうできるでしょうが) 本件、どれが最適か迷ってしまいますが、 いろいろ検討させていただきます。
- Chronos198
- ベストアンサー率30% (105/349)
#1です。alert()忘れてました。 <input type="submit" onClick="if((n1.checked==false)&&(n2.value=='')){ alert('チェックとテキストの両方が指定されていません'); return false;}"> でalert()も表示されるはずです。 失礼しました。
お礼
Chronos198さん、レスありがとうございました。 御礼遅くなってすみません。 動作の方、もちろんばっちりでした。 こうして1行に収まってしまうほど シンプルに片付くとは思いませんでした(^^; ありがとうございます。
お礼
yamabejpさん、いつもありがとうございます。 お気づきかと思いますが 元質問のサンプルは、前にyamabejpさんに ご教示いただいたclassで管理するscriptです。 本題ですが、やっぱり考えすぎですかね? 前にも、「複雑なことするのはあまりよくない」 とご指摘いただきましたが、確かに 神経質?になってるかもしれません。 ご提示いただいたものも試させていただき、 動作は良好です。 Excelのグラフ軸ダイアログと同じ作動を目指して いるのですが、yamabejpさんのものが最適かも しれません。 いずれにせよ、ありがたいことに3つ例示いただき ましたから、一番都合よさそうなものを組み込ま させていただきます。 今後ともよろしくお願い致します