ブラウザはNC 4.75です。
画面上にテキストボックスが一つしかない時、
テキストボックス内にフォーカスを合わせてEnterを押下すると
submitが働いてしまいます。
これを回避したい(Enterを押下しても変化無し)のですが、
JavaScriptではEnterのキーコードが取得出来ない様なので、
良い対処方法があれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

cite:RFC1866


==引用==
When there is only one single-line text input field in a form, the
user agent should accept Enter in that field as a request to submit
the form.
==意訳==
単一のテキストフィールドが在る場合、ユーザエージェントはそのテキストボックス(フィールド)の"Enter"をフォームからの送信リクエストとして受理すべきだよ(大意)。
========
らしいのでWWWブラウザの仕様というよりは、むしろ成すべき動作です。
んでもってどうするかですが、もうひとつテキストフィールドを作ってdisplay:hidden;とか。
それもあんまりうまくないので
<input type="text" onkeypress="if(event.keyCode == 13){alert('Enter was pushed.');return false;}">
とか。
と思ったらNetscape4.7xではkeyCode取得できないのか。というわけで
<form onsubmit="return false;" name="form1">(便宜上色々と略)
として
<input type="submit" onclick="document.form1.submit();">
こんなのはどうですか。
って下の方と殆ど変わりませんが、一応type="submit"です。
あまりお薦めできませんが。
    • good
    • 0
この回答へのお礼

返事が遅くなってすいません。
どうもありがとうございました。
一度試してみます。

お礼日時:2001/07/13 11:49

↓のx1gさんの補足です。


inputをbuttonにして、送信する所は問題ないですが、これでもEnterを押したらsubmitされるはずです。ですので、改良しまして、

<FORM ACTION="x.cgi" METHOD="POST" NAME="form1" onSubmit="return false">
<INPUT TYPE="button" VALUE="送信" onClick="javascript:document.form1.submit()">
</FORM>

とすれば、buttonを押さない限り送信されません。

この回答への補足

あくまでも TYPE="submit" のままで、
Enterを押下しても何の処理も起きないようにしたいのですが、
いかがなものでしょうか??

補足日時:2001/07/09 15:24
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
さっそく試してみます。
今後もよろしく御願いします。

お礼日時:2001/07/05 18:34

訂正です


<INPUT TYPE="button" VALUE="送信" ONCLICK="javascript:form1.submit()">
正しくは
<INPUT TYPE="button" VALUE="送信" ONCLICK="javascript:document.form1.submit()">
(動作確認してません)

この回答への補足

あくまでも TYPE="submit" のままで、
Enterを押下しても何の処理も起きないようにしたいのですが、
いかがなものでしょうか??

補足日時:2001/07/09 15:27
    • good
    • 0

ブラウザの仕様だと思いますが…



これを回避するには
<FORM ACTION="ここに送信先" METHOD="送信方法">
<INPUT TYPE="submit" VALUE="送信">
</FORM>
とせずに
<FORM ACTION="ここに送信先" METHOD="送信方法" NAME="form1">
<INPUT TYPE="button" VALUE="送信" ONCLICK="javascript:form1.submit()">
</FORM>
としてみてはいかがでしょうか?
(確認していないのでうまくいかなかったらごめんなさい。)

この回答への補足

あくまでも TYPE="submit" のままで、
Enterを押下しても何の処理も起きないようにしたいのですが、
いかがなものでしょうか??

補足日時:2001/07/09 15:28
    • good
    • 0
この回答へのお礼

こんなにすぐに回答が帰ってくると思いもしませんでした。
どうもありがとうございました。
さっそく試してみます。

お礼日時:2001/07/05 18:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qテキストボックスでリターン(Enter)ボタンを押下し、イベントを発生させる

ただ今JavaScriptを勉強しているものです。

テキストボックスでリターン(Enter)ボタンを押下し、イベントを発生させたいのですが、どういったコードで実現可能でしょうか?

どなたか教えてください。

Aベストアンサー

4個ぐらい前の質問(質問番号:5464601)に似たようなのがありました。
http://oshiete1.goo.ne.jp/qa5464601.html
ぜんかくくうはくは、はんかくにするそうです。
<script type="text/javascript" charset="utf-8">
<!--
//@cc_on
document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
 'keydown', function( evt ){
  var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
  var keyCode = evt./*@if( @_jscript ) keyCode @else@*/ which /*@end@*/;
  if( 'TEXTAREA' === e.nodeName && 13 === keyCode ){
   /*ここに処理を書く*/
  }
 },false );
// -->
</script>
</head>
<body>
<textarea rows="4" cols="40"></textarea>
</body>

4個ぐらい前の質問(質問番号:5464601)に似たようなのがありました。
http://oshiete1.goo.ne.jp/qa5464601.html
ぜんかくくうはくは、はんかくにするそうです。
<script type="text/javascript" charset="utf-8">
<!--
//@cc_on
document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
 'keydown', function( evt ){
  var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
  var keyCode = evt./*@if( @_jscript ) keyCode @else@*/ which /*...続きを読む

QEnterで指定のテキストボックスにフォーカスを・・・

Enterを押すと指定のテキストボックスにフォーカスを移動させたいのですがやり方がわかりません・・・。

例えば以下の様なフォームで
TB1→TB2→TB3→TB5→TB6
という具合に移動させたいです。

どうか皆さんのお知恵をお貸しください。

<form name = "textbox">
<input type = "text" name="TB0" onFocus="this.blur()">
<input type = "text" name="TB1">
<input type = "text" name="TB2">
<input type = "text" name="TB3"><br>
<input type = "text" name="TB4"onFocus="this.blur()">
<input type = "text" name="TB5">
<input type = "text" name="TB6">
</form>

Aベストアンサー

一般的にwebブラウザでフォームの項目移動と云えばTABキーが割り当てられているのでそういうJavascriptは余計なお世話になりかねませんが…

固有のシステムの要件だとしたら、IE限定になりますが次のように。
(フォーカスの移動順序は tabindex属性で指定、JavascriptではENTERキーをTABキーに差し替え)

<form name = "textbox">
<input type = "text" name="TB0" onFocus="this.blur()">
<input type = "text" name="TB1" tabindex="1"
onkeydown="if(event.keyCode == 13) event.keyCode = 9">
<input type = "text" name="TB2" tabindex="2"
onkeydown="if(event.keyCode == 13) event.keyCode = 9">
<input type = "text" name="TB3" tabindex="3"
onkeydown="if(event.keyCode == 13) event.keyCode = 9"><br>
<input type = "text" name="TB4"onFocus="this.blur()">
<input type = "text" name="TB5" tabindex="4"
onkeydown="if(event.keyCode == 13) event.keyCode = 9">
<input type = "text" name="TB6" tabindex="5">
</form>

一般的にwebブラウザでフォームの項目移動と云えばTABキーが割り当てられているのでそういうJavascriptは余計なお世話になりかねませんが…

固有のシステムの要件だとしたら、IE限定になりますが次のように。
(フォーカスの移動順序は tabindex属性で指定、JavascriptではENTERキーをTABキーに差し替え)

<form name = "textbox">
<input type = "text" name="TB0" onFocus="this.blur()">
<input type = "text" name="TB1" tabindex="1"
onkeydown="if(event.keyCode == 13) event.keyCode = 9">
<in...続きを読む

Q【Javascript】(テキストボックスの)テキストの末尾にフォーカスを置きたい【フォーム】

onLoad時にテキストボックスにフォーカスをあてるのですが、
質問タイトルのようなことができません。

前ページからPOSTで持ってきた文字列を入れたテキストボックスなのですが、
BODYタグ部分にonLoad="frm.elm.focus();"と書くと、
そのテキストボックス内の文字列の先頭にフォーカスが行きます。

文字列の続きを入力する項目なので
文字列の末尾にフォーカスを置きたいのですが
方法はありますでしょうか。

ご存知の方いらっしゃいましたらご教示願います。
質問が解りづらかったらすみません。
宜しくお願い致します。

Aベストアンサー

これでどうでしょう?
<html>
<body onLoad=document.F1.I2.focus();document.F1.I2.value="テスト">
<form name="F1">
<input type="text" name="I1"><br><input type="text" name="I2">
</form>
</body>
</html>

Qテキストエリアをenterキーでフォーカス移動したい

複数あるテキストエリア間を、enterキーでフォーカス移動をしたいです。
以下のようにしましたが、2つめのテキストエリアへフォーカス移動すると、改行が入力され、カーソルが2行目へ移動してしまいます。
enterキーを押しているのでこうなってしまうと思うのですが、
カーソルが1行目へ移動するようにするには、どうしたらいいでしょうか?
フォーカス移動後に改行コードがあったら、""にreplaceする・・等、試してみたのですが、なかなか上手くいきません。
どなたかお分かりになる方がいらっしゃったら、教えてください。

<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
function FirstFocus() {
document.forms.F1.elements[0].focus();
}
function nextFocus(n) {
if (event.keyCode == 13) {
for (var i = 0, f = n.form.elements; i < f.length; i++) {
if (f[i] == n) {
(f[i + 1] || f[0]).focus();
}
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="FirstFocus()">
<FORM name="F1">
<TEXTAREA name="T1" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR>
<TEXTAREA name="T2" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR>
<TEXTAREA name="T3" rows="5" cols="30"></TEXTAREA><BR>
</FORM>
</BODY>
</HTML>

複数あるテキストエリア間を、enterキーでフォーカス移動をしたいです。
以下のようにしましたが、2つめのテキストエリアへフォーカス移動すると、改行が入力され、カーソルが2行目へ移動してしまいます。
enterキーを押しているのでこうなってしまうと思うのですが、
カーソルが1行目へ移動するようにするには、どうしたらいいでしょうか?
フォーカス移動後に改行コードがあったら、""にreplaceする・・等、試してみたのですが、なかなか上手くいきません。
どなたかお分かりになる方がいらっしゃったら...続きを読む

Aベストアンサー

キーコードをチェックして CRだった場合のif文ブロックの最後に

event.returnValue = false;
を追加してみてください

QIE5.5とNC4.75ではcookieをセットするメソッドが違うのですか?

現在JavaScriptの<SCRIPT>タグ内で宣言されている配列データを

webページ上に表示されているボタンを押すことで
cookieに吐くような関数を作成したのですが

IE5.5からボタンを押した場合はcookieファイルを吐き出していることを確認できたのですが
NC4.75ではcookie.txtが更新されていることを確認できませんでした。

(株)翔泳社 JavaScript辞典 アンク著

を見る限りでは
IE5.5でもNC4.75でも
document.cookie ="keyName" + "配列" + "expires =Mon.31-Dec-2001 23:59:59;";
で書き込めると思うのですが・・・。

キー名と有効期限の他にもセットしなければいけない値があるんでしょうか?

Aベストアンサー

IEは使わないのですが、NCで思い当たることをみっつ。

ひとつは、設定で、Cookie を受け付ける指定になってない。
「設定」の「詳細」のところで確認してみてください。

もうひとつは、ちょっと文法が気になること。質問に書かれたのは
このままのソースなんでしょうか?

セミコロンやイコールの数がちょっと足りない。参考URLには、
Netscape のページを示しておきます。英語が苦手なら、
「とほほのWWW」にも同様の記述があるので、参考にしてください。

最後は localhost だと Cookie のファイルに出力されない、という
こと。

# どれかが該当すると良いのですが…

参考URL:http://developer.netscape.com/docs/manuals/communicator/jsguide4/cookies.htm


人気Q&Aランキング

おすすめ情報