JavaScriptでエラーメッセージを

[上に] [前に] [次に]
PiPi 2000/03/26(日) 16:45:19
題名の通りですが、

フォームに入力されて、ボタンを押すと
自作メッセージのエラーウィンドウ?を出したいのですが、
どのようにしたらいいのでしょう。

ちなみに、フォームに入力したメッセージはすべて
エラーとなるように作りたいです。

独学でやってみたところ、
一回目はうまくいくのですが、
再度やってみると、
http://www....../~...../hoge.html?password
といった感じにURLが表示され、
普通にリロードした感じになってしまいます。

かならずエラーウィンドウが出るように
作るにはどうしたらよいでしょうか、
教えてください。

Chose 2000/03/26(日) 16:48:21
独学でやった物を見せてください。
いまいちどうしたいかわかりません

PiPi 2000/03/27(月) 04:38:15
Choseさん、ごめんなさい。
以下がその部分です。

<head>

<script language="JavaScript">

<!--
function formBtn(passName){
                if (passName.pName.value == ""){
                alert("パスワードが入力されていません");
                }
                else{
                alert("パスワードが違います");
                }
                }
// -->


</script>

</head>

<body>
<form name="fName">
パスワード<input type="password" name="pName" size="9"> <input type="button" name="btn" value="管理人メニュー" onclick="formBtn(this.form)">
</form>
</body>

といった感じです。

Ichi 2000/03/27(月) 05:37:58
どこで送信しているのかわからないのですが、

passName.pName.value
>fName.pName.value
ですね?

onClickでformBtn関数がfalseをreturnしてやれば、
Clickされなかったことになります。
onSubmitとかでも同様です。
http://www.tohoho-web.com/js/onevent.htm#About

if (passName.pName.value == ""){
  alert("パスワードが入力されていません");
}
else{
  alert("パスワードが違います");
}
これだといつも「パスワードが〜」とでますね。

インデントですが、その形のインデントは対応がわかりにくいので
あまり感心できません。
function formBtn{
  if (passName.pName.value == ""){
    alert("パスワードが入力されていません");
  }
このような感じがよろしいかと。
../200003/00030249.htm
の辺りも参考にしてみてください。

PiPi 2000/03/27(月) 09:08:08
Ichiさん、ありがとうございます。
一度その方法でやってみます。
その後解決チェックにきますね。

PiPi 2000/03/27(月) 09:20:17
あれ?あれれ?
ごめんなさい、、コピーして張り付けてたら、
パニックになって、何か変なエラーがでます(TT)

passNameとかpNameとかへんなのつけたので、
こんがらがってます、、

だれか<head>に何を書くか、<body>フォーム部分はどうするかを
もう一度簡単に教えてください、、ごめんなさい、、

H&A 2000/03/27(月) 09:55:53
> passName.pName.value
> >fName.pName.value
> ですね?

「管理人メニュー」ボタンの onClick() でフォームを引数としているので、passName のままでいいのではないかと思います。

「ボタンを押されたら、必ずエラーメッセージを表示する」ということでしたら、Ichi さんのおっしゃっておられるように

・formBtn() の、alert() の下に "return false;" をつけて
・ボタンの onclick() ハンドラを "return formBtn(this.form);" とする

ことで実現できるのでは。
具体的には、以下のように変更してみてはいかがでしょうか。

<html>
<head>
<script language="JavaScript">
<!--
function formBtn(passName){
  if (passName.pName.value == ""){
    alert("パスワードが入力されていません");
    return false;
  }
  else{
    alert("パスワードが違います");
    return false;
  }
  return true;
}
// -->
</script>
</head>

<body>
<form name="fName">
パスワード<input type="password" name="pName" size="9"> <input type="submit" name="btn" value="管理人メニュー" onclick="return formBtn(this.form);">
</form>
</body>
</html>

PiPi 2000/03/27(月) 10:05:21
H&Aさん、ありがとうございます!
ボタンを押したときには思い通りの動作を
するようになりました(^^

しかし、フォームに入力後、return or enterキーを
押すと、
http://xxx.xxx.xxx/~user/hoge.html?pName=password
といった感じにURLが変化し、
リロードと同じ状態となります。
こちらの場合はどうすればいいのでしょうか?
お教えください。

H&A 2000/03/27(月) 10:14:40
> しかし、フォームに入力後、return or enterキーを
押すと

こちらの処理を忘れておりました。
では、button の onClick() ではなく form の onSubmit() で処理するように変更しましょう。
フォーム部を

<form name="fName" onSubmit="return formBtn(this);">
パスワード<input type="password" name="pName" size="9"> <input type="submit" name="btn" value="管理人メニュー">

とすれば大丈夫…なハズです。

PiPi(解決♪) 2000/03/27(月) 10:19:36
[[解決]]
おつきあい、ありがとうございました。
H&Aさんには心からお礼申し上げます♪

文章表現に不慣れで、分かりにくい部分も
多かったかと思いますが、誠にありがとうございました。

[上に] [前に] [次に]