none
enterキーの動き RRS feed

  • 質問

  •  asp.netの最初のバージョン(2003)で作成しています。

    textboxに番号を入力しtextaaa_textchangedにプログラムを書いて画面に表示させるものを作りました。

    クライアントの環境の中で実行させて確認すると普通に動きます。

    プログラムをレンタルサーバーに置きインターネット経由で同じ操作(番号入力、改行キー)をすると、画面内に「メニューbutton」があるのですが、そのボタンを押した動作をするようで、前のメニュー画面に移動してしまいます。

    原因回避する方法が不明です。改行キーを押さずにフォームをクリックすると希望の動きをします。


    のぐちみずき
    2009年1月28日 6:01

回答

  • こんにちは

    ご希望の答えになっているかわかりませんが、TextBoxのonkeypressイベントでenterが押された場合は処理をしないようにすれば他のボタンがクリックされた動作をさせないようにできると思います。

     

    • 編集済み handcraft 2009年1月28日 10:17 誤記修正
    • 回答としてマーク sk7474 2009年2月6日 4:55
    2009年1月28日 10:14
  • 野口みずき さんの発言: 
    プログラムをレンタルサーバーに置きインターネット経由で同じ操作(番号入力、改行キー)をすると、画面内に「メニューbutton」があるのですが、そのボタンを押した動作をするようで、前のメニュー画面に移動してしまいます。

    ちょっと詳しい状況がわからないのですが、以下が参考になりませんでしょうか?

    ASP.NET でクライアントサイドのエンターキーを制御する
    http://www.divakk.co.jp/blog/aoyagi/archive/2004/05/18/486.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年2月6日 4:54
    2009年1月29日 2:10
    モデレータ
  • ブラウザに依存するようですが、IE7 の場合、Enter キーでボタンがクリックさ
    れるというよりは、TextBox にフォーカスがあるとき Enter キーを押すと form
    が submit されるようです。 (Opera は違うようです)

    解決策は trapemiya さんの回答にありますが、汎用性を求めず TextBox だけで
    よければ、Page_Load に以下の一行を追加すればよいと思います。(TextBox1
    は自分のコードに合わせて書き換えてください。また、下記は C# ですので注意)

    TextBox1.Attributes["onkeydown"] = "if (event.keyCode == 13) return false;"; 

    なお、Opera は上記ではダメです。trapemiya さんの回答の script でもダメで
    した。(Opera バージョン 9.63 で検証)
    • 回答としてマーク sk7474 2009年2月6日 4:54
    2009年1月31日 2:48

すべての返信

  • こんにちは

    ご希望の答えになっているかわかりませんが、TextBoxのonkeypressイベントでenterが押された場合は処理をしないようにすれば他のボタンがクリックされた動作をさせないようにできると思います。

     

    • 編集済み handcraft 2009年1月28日 10:17 誤記修正
    • 回答としてマーク sk7474 2009年2月6日 4:55
    2009年1月28日 10:14
  • 回答ありがとうございます。

    textboxのイベントの中にonkeypressイベントが見当たりません。JAVASCRIPTとかいうのを使用するのでしょうか。全然使ったことが無いので時間が掛かりそうです。また調べていきます。

     


    のぐちみずき
    2009年1月29日 1:30
  • 野口みずき さんの発言: 
    プログラムをレンタルサーバーに置きインターネット経由で同じ操作(番号入力、改行キー)をすると、画面内に「メニューbutton」があるのですが、そのボタンを押した動作をするようで、前のメニュー画面に移動してしまいます。

    ちょっと詳しい状況がわからないのですが、以下が参考になりませんでしょうか?

    ASP.NET でクライアントサイドのエンターキーを制御する
    http://www.divakk.co.jp/blog/aoyagi/archive/2004/05/18/486.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年2月6日 4:54
    2009年1月29日 2:10
    モデレータ
  • 説明不足でした。 onkeypress はTextBoxコントロールのイベントではなく、htmlのテキストボックス(input type="text")のイベントです。javascript 内で、押されたボタンがEnterの場合に処理しないようにすればよいと思って回答しました。

    方法は処理するイベントは違いますが、trapemiya さんの回答で紹介されているリンクと同じです。

     

    #うまく投稿できない。。

    • 編集済み handcraft 2009年1月29日 2:24 変更
    2009年1月29日 2:20
  • ブラウザに依存するようですが、IE7 の場合、Enter キーでボタンがクリックさ
    れるというよりは、TextBox にフォーカスがあるとき Enter キーを押すと form
    が submit されるようです。 (Opera は違うようです)

    解決策は trapemiya さんの回答にありますが、汎用性を求めず TextBox だけで
    よければ、Page_Load に以下の一行を追加すればよいと思います。(TextBox1
    は自分のコードに合わせて書き換えてください。また、下記は C# ですので注意)

    TextBox1.Attributes["onkeydown"] = "if (event.keyCode == 13) return false;"; 

    なお、Opera は上記ではダメです。trapemiya さんの回答の script でもダメで
    した。(Opera バージョン 9.63 で検証)
    • 回答としてマーク sk7474 2009年2月6日 4:54
    2009年1月31日 2:48
  • こんにちは。中川俊輔 です。

    皆様、回答ありがとうございます。

    野口みずきさん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?勝手ながら、
    有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年2月6日 5:00
  • 皆様、お久しぶりです。

    最近又asp.netにて開発しています。Enterキーの無効化はSurferOnWwwさんの下記を使用していけました。(vb)

      txtKoi1.Attributes("onkeydown") = "if (event.keyCode == 13) return false;"

    他の情報も以前より理解できる気がしています。ありがとうございます。


    のぐちみずき
    2010年7月30日 2:20