フォーム送信とEnterキーのあつかい
-
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
- 元帥さま
ご回答ありがとうございました。
思ったとおりの動作をしております。助かりました。
また、お世話になることがあるかと思いますが、
どうぞよろしくお願いします。