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

実は過去のQ&Aの中でご紹介されていた
ホームページを拝見させて頂いたのですが、
残念ながら私の応用力が足りず、
上手く作ることが出来ません。

下記のように書いてみたのですが、
これでは未入力のメッセージにOKを押すと
その前に入力したものが全て消えてしまいます。

何方か、正しい書き方をご教示下さいますよう
宜しくお願い申し上げます。

<script language="JavaScript">
<!--
function checkForm(){

if(document.form1.chk1.checked == false
&& document.form1.chk2.checked == false)
{
alert('チェックなし');
return false;
}

{
flag = 0;
for ( i = 0 ; i < document.form1.radiobtn.length ; i++){
if (document.form1.radiobtn[i].checked){ flag = 1; }
}
if (!flag){
alert('ラジオなし');
return false;
}

if(document.form1.sel.selectedIndex == 0){
alert('メニューなし');
document.form1.sel.focus();
return false;
}

if(document.form1.bun.value == ""){
alert('文字なし');
document.form1.bun.focus();
return false;
}
}
return true;
}

//-->
</script>

A 回答 (5件)

消える理由は、フォームactionのリンク先を設定せずにローカルで試しているためではないでしょうか?


リンク先を指定していしない場合は、もう一度今見ているページをロードするため消えているように見えてしますということです。

こんな回答でよろしかったでしょうか?
とりあえずはソースにエラーはないとおもわれます。
    • good
    • 1
この回答へのお礼

AquaSkyMoon様
2度もお答え頂いて、大変感謝しております。
#3のご回答で全て解決致しました。
form action に送り先を指定すると、
ちゃんと消えずに書き込めました\(^o^)/
分かってみると単純なことでしたが、
どうしても分からなくて困っていました。
今回のご回答のおかげで思うとおりのフォームが作れます。
本当にどうもありがとうございました。

お礼日時:2005/03/08 17:30

#4を訂正させてください。



すみません、すっごい寝ぼけてました。

>2回onsubmitしているから、おかしいのではないでしょうか?

↑これはいいとして、対応策は、間違ってます。

submitボタンのonClickイベントを削除
で、いけると思います。
    • good
    • 0
この回答へのお礼

kappa_neko様
わざわざ2回もご回答ありがとうございました。

onClick="checkForm()" を消して
<input type="submit" value="送信">にするということですよね?
残念ながらこれだけでは上手く動かず、
form actionに送り先を指定すると
ちゃんと動作してくれました。
結局問題は送り先を指定していなかったことのようです。

>2回onsubmitしているから、おかしいのではないでしょうか?

というご指摘、確かにそうですよね!
これに関しては全然疑問に思いませんでした。
もっといろんなサイトや参考書を見て勉強してみます。
本当にありがとうございました。

お礼日時:2005/03/08 17:37

2回onsubmitしているから、おかしいのではないでしょうか?




1. formタグのonSubmitを削除 & checkFormファンクション内で、
documnt.form1.submit();
(return trueではなくて。)
を追加。

2. submitボタンを普通のボタンにする。


↑どっちかで解決すると思います。
(すみません、試したわけではないです。)
    • good
    • 0

少しみてみましたが


一度クッキーで内容を取得するとよろしいかと。
先の回答の方がいらっしゃるので、
詳細はお任せします。
    • good
    • 0
この回答へのお礼

kaiu様
ご回答ありがとうございました。

単純に、form action に送り先を指定することで
解決することができました。

>一度クッキーで内容を取得するとよろしいかと。

そういうやり方もあるのですね。
と言っても、具体的なやり方は調べないとわからないという、
本当にまだまだド素人のレベルなので、
上級すぎる技かもしれませんが(^^ゞ

でも、貴重なお時間にわざわざご回答下さったこと、
本当に感謝致します。
ありがとうございました。

お礼日時:2005/03/08 17:28

しっかりと内容を見せてもらっていないのと、


フォームのHTMLがあれば分かりやすいのですが、、、

とりあえず1点
最初のほうのIF分でカッコがあまってるように思えるのですが、確認していないのでまちがってたらすいません。

>function checkForm(){

if(document.form1.chk1.checked == false
&& document.form1.chk2.checked == false)
{
alert('チェックなし');
return false;
}
<<-ここに「else」がはいるのでは??
{
flag =

この回答への補足

チェックボックスとラジオボタンのvalueが抜けてました。

【訂正後】
<body>
<form name="form1" method="post" action="" onSubmit="return
checkForm()">
<input type="checkbox" name="chk1" value="1">1
<input type="checkbox" name="chk2" value="2">2<br>
<input type="radio" name="radiobtn" value="1">1
<input type="radio" name="radiobtn" value="2">2<br>
<select name="sel">
<option>▽選択</option>
<option value="1">項目1</option>
<option value="2">項目2</option>
</select><br><br>
<input type="text" name="bun"><br>
<input type="submit" value="送信" onClick="checkForm()">
</form>
</body>

補足日時:2005/03/08 15:59
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
フォームの部分は文字数の関係で投稿できなかったのですが、
下記のようにしております。

<body>
<form name="form1" method="post" action="" onSubmit="return
checkForm()">
<input type="checkbox" name="chk1">1
<input type="checkbox" name="chk2">2<br>
<input type="radio" name="radiobtn">1
<input type="radio" name="radiobtn">2<br>
<select name="sel">
<option>▽選択</option>
<option value="1">項目1</option>
<option value="2">項目2</option>
</select><br><br>
<input type="text" name="bun"><br>
<input type="submit" value="送信" onClick="checkForm()">
</form>
</body>

また、ご指摘の通りelseを入れてみたのですが
やはり上手くいきませんでした。

お礼日時:2005/03/08 15:52

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