プロが教えるわが家の防犯対策術!

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>

A 回答 (4件)

<input type="submit">



<input type="submit" onClick="if((n1.checked==false)&&(n2.value=='')) return false;">
に置き換えてみてください。

というか、checkboxのonClickに手を入れれば両方とも空にならなく出来そうですが・・・。
    • good
    • 0

なんか考えすぎな気がします。


このくらいにおさえておくのが現実的なんではないでしょうか?
この場合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>
    • good
    • 0
この回答へのお礼

yamabejpさん、いつもありがとうございます。

お気づきかと思いますが
元質問のサンプルは、前にyamabejpさんに
ご教示いただいたclassで管理するscriptです。

本題ですが、やっぱり考えすぎですかね?
前にも、「複雑なことするのはあまりよくない」
とご指摘いただきましたが、確かに
神経質?になってるかもしれません。

ご提示いただいたものも試させていただき、
動作は良好です。

Excelのグラフ軸ダイアログと同じ作動を目指して
いるのですが、yamabejpさんのものが最適かも
しれません。

いずれにせよ、ありがたいことに3つ例示いただき
ましたから、一番都合よさそうなものを組み込ま
させていただきます。

今後ともよろしくお願い致します

お礼日時:2005/12/01 23:08

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)">
とする
    • good
    • 0
この回答へのお礼

BLUEPIXYさん、いつもご教示ありがとうございます。

動作の方も完璧です。#1さんのように
違って外部ファイルにもてるのがいいですね。
(無論、#1さんのもそうできるでしょうが)

本件、どれが最適か迷ってしまいますが、
いろいろ検討させていただきます。

お礼日時:2005/12/01 23:03

#1です。

alert()忘れてました。
<input type="submit" onClick="if((n1.checked==false)&&(n2.value=='')){ alert('チェックとテキストの両方が指定されていません'); return false;}">
でalert()も表示されるはずです。

失礼しました。
    • good
    • 0
この回答へのお礼

Chronos198さん、レスありがとうございました。
御礼遅くなってすみません。

動作の方、もちろんばっちりでした。

こうして1行に収まってしまうほど
シンプルに片付くとは思いませんでした(^^;
ありがとうございます。

お礼日時:2005/12/01 23:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!