• 締切済み

onclickをEnterキーでも行いたい

チャットの仕組みを知りたくて以下のサイトを見ています。 http://www.ibm.com/developerworks/jp/xml/library/x-ajaxxml8/ ここの『リスト 6. chat.php (修正後)』にあります、発言を送信する部分、 <button onclick="addmessage()">Add</button> をEnterキーで行いたいと思い、 onKeyPressへ書き換えてみましたが反応しませんでした。 こちらをonclickでもEnterキーでも両方で行いたいのですが、どのようにすればよろしいのでしょうか?

みんなの回答

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

#1 です。お礼をよみました。 > 画面が一度消え再表示される、いわゆるページリロードのようになってしまいます。 form送信が発行され、画面が再描画されている為と思われます。 onclick でも同様の問題は発生するはずですが、form要素がなかったのでしょうか。 デフォルトアクション(form送信)を無効化する為、event.preventDefault() を追加してください。 https://developer.mozilla.org/ja/docs/Web/API/event.preventDefault # Re: whitebeltさん

回答No.3

jqueryとなりますが $("input select").keydown(function() { if( event.keyCode == 13 ) { alert('テキストとプルダウン上でenterキーが押下されました。'); } });

回答No.2

<button type="button" onclick="addmessage()">Add</button> このままで行けませんか? type="button"を指定しておいた方がいいです。typeのデフォルト値はブラウザ共通ではないので。 もしかしたら、エンターキーでフォームが送信され、ページを再読み込みしているのかもしれません。(type="submit" がデフォルトのブラウザを使われている場合。)

whitebelt
質問者

お礼

ありがとうございます。 こちらの方法も試してはいたのですが、できませんでした。 発言を入れEnterを押すと、画面が一瞬消え再表示、発言は更新されません。 <button type="button" onclick="addmessage()" onKeyPress="addmessage()">Add</button> も試してみましたがダメでした。

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

click ではなく、submit イベントを定義してください。 アクセシビリティを考えれば、click 依存は避けるのが無難です。 # Re: whitebeltさん

whitebelt
質問者

お礼

お早いご回答ありがとうございます。 おっしゃるように、 <form id="chatmessage"> <input type="text" name="message" id="messagetext"> <input type="submit" value="Add" onclick="addmessage();"> </form> としてみますと、Enterキーで発言の送信はできたのですが 画面が一度消え再表示される、いわゆるページリロードのようになってしまいます。 このスクリプトの当初の挙動のようにリロード無しで発言のみを表示させたいのですが、不可能なのでしょうか?

関連するQ&A

  • onclickとonkeypressの重複

    W3Cのアクセシビリティ指針によれば、onclick属性を指定するならonkeypress属性も指定せよ、とのことですが、たとえば<input type="button">にこの両方を指定すると、IEなどの場合、このボタンにフォーカスがある状態でスペースキーを押すと、onkeypressイベント→onclickイベントというように両方とも発生してしまいます。 本来、ポインティングデバイスの代替の操作のためであるにもかかわらず、これでは逆にアクセシビリティは低下するばかりでなく、処理によっては2回行って欲しくない場合もあり、なんとも面倒です。 考えられる対策としては、たとえば、ほとんどのブラウザではキーでもonclickが起きるようになっているため、あえてonkeypressのほうはダミーを指定しておく、などでしょうか。 これに対してのお考えや、対策など御教授いただけたらと思います。 よろしくお願いいたします。

  • ENTERについて

    <INPUT TYPE="TEXT" NAME="no" SIZE="10" MAXLENGTH="8"> というtextエリア内でenterキーを押した時に、 <INPUT TYPE="button"VALUE="Go!"onClick="openWin0003( '2','./test.html')"> と同じ処理を行うようにするにはどのように記述すれば いいのでしょうか? textエリア内で、enterキーを押した時に任意のfunctionが実行されるにはどのようにするのかということなのですが・・・。 よろしくお願いします。

  • enterキーでのtab移動

    質問させて頂きます。 下記の様にenterキーを押してtab移動しようと考えています。 <form name="form"> <input type="text" id="id1" onkeypress="if(code == 13)document.form.item('id2').focus();"> <input type="text" id="id2" onkeypress="if(code == 13)document.form.item('id3').focus();"> <input type="button" id="id3" value="ボタン"> </form> ここで、textフォームからボタンへ移動する場合、自動的にボタンが押されてしまいます。 (エンターキーでの移動のため) ボタンが押されないような方法はあるでしょうか。アドバイスお願い致します。

  • WebでEnterキーを押した時の挙動

    カテが間違えていたらすみません。 下記ソースにてEnterキーを押すと、検索ボタンを押した事になり、「検索ボタンが押された!」とポップアップするにはどのようにすればよいでしょうか。 <HTML> <BODY>  <INPUT TYPE = "text">  <INPUT TYPE = "button" value="検索" onClick="javascript:alert('検索ボタンが押された!')">  <INPUT TYPE = "button" value="クリア"> </BODY> </HTML> ブラウザはIE6です。補足が必要でしたら仰ってください。 宜しくお願いします。

  • 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つを試してみたのですが、どちらもエラーになってしまいました。 原因がわからないので調べているところですが、もしどなたか他の方法をご存知でしたら、教えていただけませんでしょうか?

  • ENTERキーを無効にしたいのですが教えて下さい。その2

    以前、以下の方法を教えていただいてうまくいったのですが、 ボタンを画像ボタンにし、javascriptで、押したら沈むボタンを 作成したところ、ENTERキーが無効にならなくなりました。 ENTERキーを押されて送信されないことが先決なので、 どなたかご伝授いただければと思います。 以前のスクリプト <html> <head> <title>親</title> <script type="text/javascript"> <!-- window.name = (new Date()).getTime(); function make_newwin(f) {   f.target = window.name + "_ko";   var w = window.open("about:blank", f.target, "スタイル設定");   w.focus();   f.submit(); } //--> </script> </head> <body> <form action="/cgi-bin/test-check.cgi" method="post" onSubmit="return false"> <input type="button" value="送信" onClick="make_newwin(this.form)"> </form> </body> </html> こちらで、 <input type="button" value="送信" onClick="make_newwin(this.form)"> これを以下のようにtypeを変えてしまったところ、効かなくなりました。 <input type="image" SRC="new.gif" ALT="新規登録ボタン" NAME="botan_new11" WIDTH="78" HEIGHT="26" BORDER="0" ID="botan_new" border=0 onMouseOver="MM_swapImage('botan_new11','','botan_new_sw.gif',1)" onMouseOut="MM_swapImgRestore()" onClick="make_newwin(this.form)"> これは、無理な話なのでしょうか?教えて下さい。

  • Zend GData CLを使ってみたが・・・

    Zend GData CL の勉強を始めました。目標として、 http://www.ibm.com/developerworks/jp/xml/library/x-googledata1/ のページにある「リスト 3. スプレッドシートのリスト(取得)」のファイルを動かすところから始めたのですが、最初から躓いています。次のようなファイルをサーバーに上げたのですが、「動きません・・・」 http://www.withmama.info/s_spread_s_kaiinninsyoh/ibm_3.html (お手数ですがソースをご確認ください)。ファイル中の ZendGdata/library へのパスは正しく設定されています。それが証拠に  http://www.withmama.info/s_spread_s_kaiinninsyoh/heipooh.php はちゃんと動きました。 http://www.withmama.info/s_spread_s_kaiinninsyoh/ibm_3.html のどの部分を修正すれば動くか、どなたか私の勉強にお付き合いいただける方はいらっしゃいませんか?

    • ベストアンサー
    • PHP
  • Enterキーでボタンを押すにはどうすればいいのでしょうか

    色を指定するチェックボックスがあり,表示ボタンで指定された色の混色を表示するプログラムです. このプログラムに,Enterキーの入力に表示ボタンを押したのと同じ効果をもたせたいのですが,どうすればいいでしょうか. また,requestFocusInWindow()をどこに挿入すればうまくいくのでしょうか. *************************************************************** import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Q1 extends Applet implements ActionListener { // チェックボックス3つとボタン1つ Checkbox cbx1, cbx2, cbx3; int red = -1, green, blue; Button btn; public void init() { cbx1 = new Checkbox("Red"); cbx2 = new Checkbox("Green"); cbx3 = new Checkbox("Blue"); add(cbx1); add(cbx2); add(cbx3); btn = new Button("Paint"); btn.addActionListener(this); add(btn); addKeyListener(new KeyAdapter() { public void KeyPressed(KeyEvent ke) { if (ke.getKeyCode() != KeyEvent.VK_ENTER) return; SetColor(); repaint(); } }); } // ボタンを押したとき public void actionPerformed(ActionEvent e) { SetColor(); repaint(); } // 色の設定 public void CheckColor() { if (cbx1.getState()) red = 255; else red = 0; if (cbx2.getState()) green = 255; else green = 0; if (cbx3.getState()) blue = 255; else blue = 0; } // 色付き長方形の表示 public void paint(Graphics g) { if (red != -1) { g.setColor(new Color(red, green, blue)); g.fillRect(10, 50, getSize().width - 20, getSize().height - 40); } } } *******************************************************************

    • ベストアンサー
    • Java
  • Enterキーでボタンが押下&新しいタブで開くには

    こちらで教えていただきながら、下記のようなhtml文にたどり着きました。 加えて以下のことをしたいと思っており、解説を読みながらいろいろ試していますがうまくいきません…。 (1)テキストボックスに文字を入力した後、Enterキーでボタンが押下されるようにしたい (2)結果の画面を新しいタブで表示したい (head部分に<base target="_blank">と記述してもでダメでした) 上記2つのことが出来るようでしたら、その方法を教えていただけないでしょうか。 どうぞよろしくお願いいたします。 -------------------------------------------- <html> <head> <script type="text/javascript"> <!-- function jump1(){ location.href="http://minkabu.jp/stock/" + document.getElementsByName("code1")[0].value; } function jump2(){ location.href="http://kabu-sokuhou.com/brand/item/code___" + document.getElementsByName("code2")[0].value; } //--> </script> <base target="main"> </head> <body> <form> <input name="code1" size="4" > <br><br> <input type="button" onclick="jump1()" value="サイト1へ"> </form> <form> <input type="hidden" name="code2" size="4"> <input type="button" onclick="jump2()" value="サイト2へ"> </form> </body> </html> -----------------------------------------------------

    • ベストアンサー
    • HTML
  • フォームでEnterを押してもsubmitさせない

    現在製作中のサイトで、ajaxで処理を行うため、フォームでEnterキーを押しても通常のsubmitをさせずに、別途処理を関数で呼び出すようにしています(下記参照)。 チェックしたほとんどのブラウザでは思い通りの動作なのですが、IE8(他のIEは未テスト)で、同じページに別のフォーム(こちらのフォームはEnterでsubmitさせています)があるページのみ、submitされてしまいます。(ajax_submit()も実行されます) 小さな可能性でもかまいません。お心当たりがございましたらお助けください。 ▼HTML <form method="get" action="">  <input id="s" type="text" value="" onKeyPress="return submitStop(event);" />  <p id="search_sbm" onclick="ajax_submit();">検索</p> </form> ▼JavaScript function submitStop(e){  if (!e) var e = window.event;  if(e.keyCode == 13) {   ajax_submit();   return false;  } }