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

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

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

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

Q&A

解決済

2回答

1726閲覧

jQueryのおまじない$(function)({});に関する質問

noisy_max

総合スコア46

jQuery

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

0グッド

1クリップ

投稿2016/05/22 14:29

htmlのformがエンターキーでsubmitされることを防ぐため、以下の様なコードを書きました。

javascript

1$(function(){ 2 $('input').keydown(function(e) { 3 if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 4 return false; 5 } else { 6 return true; 7 } 8 }); 9 10 $('select').keydown(function(e) { 11 if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 12 return false; 13 } else { 14 return true; 15 } 16 }); 17});

しかし、これではselectにフォーカスがあるときにエンターを押すと、submitされてしまいました。
(inputではエンターキーをブロックしました)


一方、以下のようにすると(別々におまじないをかける)
selectでもちゃんとエンターキーの入力をブロックしてくれました。

javascript

1$(function(){ 2 $('input').keydown(function(e) { 3 if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 4 return false; 5 } else { 6 return true; 7 } 8 }); 9}); 10 11$(function(){ 12 $(’select').keydown(function(e) { 13 if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 14 return false; 15 } else { 16 return true; 17 } 18 }); 19});

なぜこのような事になるのでしょうか?
どちらもコードの意味は同じだと思うのですが、、

ご教授の程よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/05/22 23:28

2つ目のコードブロックの部分$(’select')に全角文字が入っていますがtypoでしょうか?
guest

回答2

0

ベストアンサー

1つ目のコードのreturn false;の直線でそれぞれconsole.logして動作を確認してみたのですが、
chrome/IE11ではinputselectも動作していました。(jquery 2.2.3)
動作確認はどのブラウザで行いましたか?

chrome or IE11の場合は一度1つ目のコードで再現性を確認してみていただけますか

投稿2016/05/22 23:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

noisy_max

2016/05/23 01:24

本日再び試したところ、正常に動作しました… 本当に申し訳ないです。 ご回答有り難うございました。
guest

0

両者での違いは、イベントオブジェクトのスコープかもしれません。
一つ目の書き方では、どちらも同じイベントオブジェクトを指しており、誤動作につながっている気がします。
試してもいない予測ですいませんが・・・

selectの方をeではなくseなどに変更してもダメでしょうか?

投稿2016/05/22 22:16

munyagu

総合スコア479

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

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

noisy_max

2016/05/23 01:25

前者のコードでも正常に動作しました。きちんと確認せず質問してしまい申し訳ないです。 イベントオブジェクトの点のご指摘ありがとうございます。以後の開発では気をつけたいと思います。 ご回答有り難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問