質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1006閲覧

Jquery 複数イベント設定し、一方だけが引数を設定する場合

maguzo

総合スコア57

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/07/19 12:07

編集2018/07/19 12:08

下記の#2のように、実質同じようなイベントハンドラー(submitしたいだけ)について、keypressがイベント引数を設定してkeyCodeを拾わなければならないという理由でそれぞれ分けて記載することで冗長なコードになってしまいます。もちろん#1のように記載することはできないのですが、このように片方は引数を足らなくてはならないようなイベントの場合は、まとめて記載することはできないのでしょうか?

javascript

1#1 2$('#hoge').on('click keypress',function(event){ 3 if(event.keyCode==13){ 4  $('#piyo').submit();//#hogeがfocus状態で、enterkeyが押されたらsubmit 5 } 6 $('#piyo').submit();//#hogeをclickしたら#piyoをsubmit 7})

javascript

1#2 2$('#hoge').on('click',function(){ 3 $('#piyo').submit();//#hogeをclickしたらsubmit 4}) 5 6$('#hoge').on('keypress',function(event){ 7 if(event.keyCode==13){ 8  $('#piyo').submit();//#hogeがfocus状態で、enterkeyが押されたらsubmit 9 } 10}) 11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

hogeをクリックしたらsubmitされるなら、hogeがフォーカスされて
エンターをうけることもないし、そもそもinputでエンターを入れれば
サブミットされるのはformの仕様なのでやっている事自体は無意味だと
思いますが・・・あくまで複数イベントの指定の仕方

(1)onの中で{"イベント名":コールバック,・・・・}で指定すれば
複数イベントを並行してかけます

javascript

1 2$(function(){ 3 $('#hoge').on({ 4 'click':function(){ 5 $('#piyo').submit(); 6 }, 7 'keypress':function(e){ 8 if(e.keyCode==13){ 9 $('#piyo').submit(); 10 } 11 }, 12 }); 13}); 14

(2)イベントのタイプを拾う

javascript

1$(function(){ 2 $('#hoge').on('click keypress',function(e){ 3 if((e.type=="keypress" && e.keyCode==13)||e.type=="click"){ 4 $('#piyo').submit(); 5 } 6 }); 7}); 8

※(2)修正

投稿2018/07/19 12:21

編集2018/07/19 13:11
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maguzo

2018/07/19 12:44

yambejp様 ご回答いただきありがとうございます。 #hogeがinputやbuttonタグではなくdivタグであったため、tabindexを設定した上で、クリック以外にボタンと同様に取り扱うためにenterでsubmitを受け付ける必要があるところから検討しておりました。 (1)の書き方は知らなかったのですが、コードの量は実質2倍ですね。。 (2)ではtypeプロパティというのがあるのですね、 非常に勉強になりました。
yambejp

2018/07/19 13:10

仮に#hogeがdivだったとしても、clickしてsubmitされたらkeypress されることはないとおもいますが・・・ まぁ思うところがあるのでしょう (2)の記述一部修正しておきました
maguzo

2018/07/19 13:34 編集

すみません、もしかして私が思い違いをしていたらコードを描き直したいので お尋ねしたいのですが、 <form action="foo.php" method="post" id="piyo">  <input type="text" name="text" >  <div id="hoge">button</div> <form> と言った場合に、inputからtabを押して、#hogeにフォーカスしたところで、enterをしてsubmitを実行したいこともあれば、マウス操作で直接#hogeをclickするというケースもあるという意味合いだったのですが、おかしなところがあれば忌憚のないご意見をいただければと思います。 重ねて失礼いたします。
yambejp

2018/07/19 13:39

勘違いだったらすみません inputからtabをおしてdivにフォーカスしますか?
maguzo

2018/07/19 13:51

その通りです、したがって書き漏れましたが <div id="hoge" tabindex="0">button</div> でした。 たびたび申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問