<form action="http://xxxx.xxxx.xxx/yyy.cgi" method="post" onSubmit="zzz();">を使うとでてくる。ここで zzz() はJavaScriptで書かせた関数。この関数 zzz() の戻り値を false にすると,submitがキャンセルされる,と書いてある。なので、zzz() の中で入力値の判断を行い、最後に false を返せば、submitされずに入力画面のままとなるはず。これはいい,と思ってさっそくJavaScriptを書いてみた。
ところがやってみるとこれがうまくいかない。確かに zzz() って処理をしているが,submitがキャンセルされない。なんで??いろんなサイトを見てもその点については書いてくれてない。困った。実は1ヶ月ほど前にも似たような状況になって,あきらめて処理を変更した,というケースがあった。今回もあかんかな?と思ったら,ブログサイトでその件について書いてあるところがあった。でも,そのサイト忘れちゃった。その内容はというと,
<form action="http://xxxx.xxxx.xxx/yyy.cgi" method="post" onSubmit="zzz(); return false;">のように,onSubmitで実行する関数のところに,return false; ってのを書いておく,って作戦。そうしないとzzz()から戻ってきた時に,submitが実行されてしまうらしい。return false; ってのを入れておくと確かにうまくいった。ちゃんと submit がキャンセルされて、入力画面のままになった。他の onSubmit について書いてるサイトではこの記述を見なかったけど,みんな苦労してないのかなぁ??それともそのようなトラブルにあった事ないのかなぁ?
そういえば,上記のようにするとreturn false;で戻った時に確かにsubmitはキャンセルされるが,困ったことに今度はsubmitがうまくいかなくなった。その時どうしたかというと,xxx()の処理の最後に
document.yyyyy.submit(); return false;ってのを入れておいた。そしたらOKの時にはちゃんとsubmitして,途中でreturn false;で戻った時にはちゃんとsubmitがキャンセルされてた。よかったよかった。
1 件のコメント:
onSubmit="return zzz()" で大丈夫かと…。
コメントを投稿