- ベストアンサー
IEでのフォームメールで、ENTERキーでのsubmitを動かさないようにしたいのですが。。
IEでフォームメールを使用したときにENTERキーを押下するとsubmitが動いてしまうのですが、その動きを止める為に 1.送信ボタンは <input type="button" name="submit" value=" 送信する " onClick="subm()"> で関数subm()で function subm() { document.form1.submit(); } という動きと 2.送信ボタンに<input type="button" name="submit" value=" 送信する " onClick="javascript:document.form1.submit()"> という動きの2つを試してみたのですが、どちらもエラーになってしまいました。 原因がわからないので調べているところですが、もしどなたか他の方法をご存知でしたら、教えていただけませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 ENTERキー押下でSubmitが動くのが記述された方法で止められるかは、わかりませんが、エラーの原因は ボタンの名称です。 「SUBMIT」などの予約語は、使ってはいけないのです。 実際に記述されている、コードで試してみました。 確かにエラーでしたが、名前を変えるだけでOKになりましたよ。 (IE5.5で試しました) あしからず。
その他の回答 (2)
- masamisss
- ベストアンサー率50% (2/4)
#1.送信ボタンは #<input type="button" name="submit" value=" 送信する " onClick="subm()"> #で関数subm()で #function subm() #{ #document.form1.submit(); #} 基本的にはこれでいいのですが、 formタグに<form name="form1">という指定をしましたか?これがないと JavaScriptの「document.form1」という記述と矛盾してしまうため、うまく行きませんよ。 (form1というオブジェクトは存在しない、というエラーが返ってくる) こちらで実験したところ、相違点はこれだけです。 これでスクリプトのエラーはなくなるはずです。
お礼
回答ありがとうございます。 ちゃんと <form name="form1">は記述しているのですが、うまくいかないのです。今日は一日これのエラー探しで終わりそうです。。。 ありがとうございました。
- masamisss
- ベストアンサー率50% (2/4)
どうやら、IEではフォームのテキストボックスがアクティブになると同時に 「submit」ボタンもアクティブになる、という仕様のようです。 要するにテキストボックスを入力中に間違ってenterキーを押すと、 勝手にsubmitボタンも押されてしまいます。 ネスケではこのようなことがないみたいですが。 というわけでsubmitボタンが押されたときに確認用のダイアログボックス を表示する、という仕組みにするのが手っ取り早いのではないでしょうか。 具体的には以下のとおりです。 #submitボタンが押されたらreturn formConfirm関数を呼び出す# #関数から「true」が返ってきたら処理を続行、# #「false」が返ってきたら処理を中止する# <input type="submit" onClick="return formConfirm()"> <!-- function formConfirm() { //確認用のダイアログボックスを表示し、ユーザーの入力待ちになる rtn = confirm("データを送信します。\nよろしいですか?"); if(rtn){ //もし「OK」が押されたら return true; //「true」を返す } //「キャンセル」が押されたら return false; //「false」を返す } -->
お礼
丁寧な回答有り難うございます。 しかし、できれば見ている人が意識しないところで動くようにしたいのです。 質問内容にそのことを書かずに申し訳ありません。。 本当でしたら質問に書いているソースで動くはずだと思うんですけど、何かがひっかかっているようで・・・・
お礼
...ありがとうございます!こんな事に気付かなかったなんて恥ずかしい限りです(笑)予約語は使ってはいけないと知っていながら、、、、ボケていました。(笑)ありがとうございました。