フォーム送信とEnterキーのあつかい

[新着] Webテンプレートを仮オープンしました



0   名前: ひろみ : 2005/07/11 00:28
いつも勉強させていただいております。

現在、掲示板のスキンを作成しているのですが、
フォームの送信ボタンにフォーカスが当たっていない状態でも、
Enterキーを押しただけで送信されてしまい、困っています。
(<input type=text>に文字を入力している最中に、
 うっかり2回Enterキーを押してしまった場合など)

tabindexを指定してみましたが、変化はありませんでした。

どのような回避方法がありますでしょうか。ご教授いただけると幸いです。
よろしくお願い申し上げます。

1   名前: 元帥 : 2005/07/11 00:28  [URL
テキストボックス入力後に、すぐに送信したくてEnterを二回連続で押す人もいますから、この方法が一番でしょうかね。

<form action="" method="" onSubmit="return confirm('送信しますか?')?true:false">
<input type="textbox" size="50">
<input type="submit" value="送信">
</form>


2   名前: ひろみ : 2005/07/11 00:28
ご回答ありがとうございました。
無事、途中での送信を回避できました。

こちらは、JavaScriptがonのときのみ有効と理解してもよろしいでしょうか?

あと、ちゃんと送信ボタンにフォーカスがある時や
マウスでクリックしたときも、確認ウィンドウがでてしまうのですね。
「“送信ボタンにフォーカスがない場合のみ”に出す」
ということは不可能でしょうか?
我が儘な希望ですが、利用者にはその方が便利だと思いますので、
もし可能でしたらご教授いただけると幸いです。

(もともと、どうしてフォーカスがないのに、
 submitされてしまうのかが理解に苦しむところなのですが…
 HTMLはそういう仕様なのでしょうか)

3   名前: 元帥 : 2005/07/11 00:28  [URL
> こちらは、JavaScriptがonのときのみ有効と理解してもよろしいでしょうか?

はい、JavaScriptを用いているのでそうなります。


> 「“送信ボタンにフォーカスがない場合のみ”に出す」
> ということは不可能でしょうか?

こんな方法を思いつきましたので、ご参考に。

<form action="" method="" onSubmit="return check()">
<input type="textbox" size="50">
<input type="submit" value="送信" onFocus="set(0)" onBlur="set(1)">
</form>

<script type="text/javascript">
<!--

var tf=1;

function check(){
return eval(tf)?confirm("送信しますか?")?true:false:true;
}

function set(setof){
tf=setof;
}

//-->
</script>


>(もともと、どうしてフォーカスがないのに、
> submitされてしまうのかが理解に苦しむところなのですが…
> HTMLはそういう仕様なのでしょうか)

http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/cover.html
仕様には「提出ボタンがアクティブになったら…」とありますが、
そもそもキーボードは唯一絶対的なデバイスではないので。

つまり、テキストボックスへフォーカス中にEnterキーを押すと、
送信ボタンがアクティブになるというのは、ブラウザ側の仕様かと。

4   名前: 匿名希望 : 2005/07/11 00:28
bv

5   名前: ひろみ : 2005/07/11 00:28
元帥さま

ご回答ありがとうございました。
思ったとおりの動作をしております。助かりました。

また、お世話になることがあるかと思いますが、
どうぞよろしくお願いします。

一覧へ戻る