This page is Japanese code S-JIS
テキストボックスでの「リターンキー」で送信しないようにする

IE5.00.2920.0000 for 32bit Windows や NC4.6 & NN3.04en for 32bit Windows など(Netscape は、テキストボックスが一つの場合だけ機能する仕様)は、テキストボックスで、"「リターン・キー」"を押してしまう事で、フォーム内容が送信されてしまうが、そうならないようにするための、JavaScriptです。

テキストボックスが、複数になると、このスクリプトは使用できない。
(Netscape は、そのような機能が無くなるし、IE の場合、人間の操作をエミュレート{テキストボックスでリターン->テキストボックスからフォーカスを外す->submitボタンにフォーカス->submitボタンをクリック}しているので、テキストボックスでリターンを押したのか、submitボタンを押したのかを判断できない)

仕組みは、
  1. hidden タグを用意しておく。
  2. 送信ボタンを押したときは、hidden タグの value 値を変更している。
  3. フォームの内容送信時には、onSubmit イベントが発生して、その時に、hidden タグの値をチェックする。
    (送信ボタンをクリックしていなければ、戻り値を偽(return false)となり、送信されない)
  4. hidden タグの値を元に戻す。
つまり、
<FORM onSubmit="if(document.フォーム名.ヒドゥン名.value == 'anotherValue'){document.フォーム名.ヒドゥン名.value='defoltValue';}else{return false;}" NAME="フォーム名"....>
<INPUT TYPE="hidden" NAME="ヒドゥン名" VALUE="defoltValue">
<INPUT TYPE="text" NAME="テキスト名">
<INPUT TYPE="submit" onClick="document.フォーム名.ヒドゥン名.value='anotherValue'">
</FORM>

複雑な、条件判定はできるだけしない方がいい。
なぜなら、onSubmit イベントで起動する処理を関数化すると、戻り値がきちんと戻らないから。
ここを参照


動作確認ブラウザ
Netscape Navigator 3.04en for MS-Windows9x
OK(以下の条件付)
Netscape Communicator 4.6jp for MS-Windows9x
OK
Internet Explorer 4.72.3110.1 SP1 for MS-Windows9x
??
Internet Explorer 5.00.2920.0000 for MS-Windows9x
OK




NN3.04en での注意事項
NN3.04en では、onSubmit イベントの処理記述が、"return false" 文(戻り値が記述の途中にある事という事で)が途中にある事で動かなくなるので、そのあたりを工夫する必要がある。

ここを参照


mail to active@window.goukaku.com