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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

3回答

4096閲覧

【WordPress】お問い合わせフォームでエンターを押した際に次のインプットに移動したい

associate

総合スコア8

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2017/08/22 03:05

編集2017/08/22 04:11

WordPressでウェブサイトを構築しております。
WP MW formというプラグインを利用してお問い合わせフォームを設置しているのですが、入力中にエンターキーを押した際に確認画面へ移動してしまうので、エンターキーを押した際にtabキーを押した動作と同様に、次のインプットに移動する作りにしたいと考えております。

javascriptで制御できるかと思うのですが、疎いためどのような記述をすればよいか分かりません。
可能であれば、コードの要点の解説もしてくださると大変助かります。

何卒よろしくお願い致します。

【追記 2017/08/22】
実際に運用するフォームです。
運用フォーム

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

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

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

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

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

guest

回答3

0

ベストアンサー

考え方は色々有りますがe.keyCodeをチェックするのが一般的です
ただしtabindex通りに移動したい時どうするかとか
type=text以外はどうしたいのかなど仕様を固める必要があります

javascript

1document.addEventListener('keydown',function(e){ 2 var t=e.target; 3 if(t.nodeName=="INPUT" && t.type=="text" && e.keyCode==13){ 4 var f=t.form; 5 for(var i=0;i<f.length;i++){ 6 if(f.elements[i]==t){ 7 f.elements[(i==f.length-1)?0:i+1].focus(); 8 } 9 } 10 e.preventDefault(); 11 } 12}); 13

HTML

1<form> 2<input type="text" name="n1" tabindex="1"> 3<input type="text" name="n2" tabindex="2"> 4<input type="text" name="n3" tabindex="4"> 5<input type="text" name="n4" tabindex="3"> 6<input type="submit" value="go"> 7</form> 8

追記

ご指定の内容で特に問題ないようですよ
ご利用の環境ではなにかライブラリでキーイベントに機能が付加されているのかもしれません
email、hiddenに対応しました

javascript

1<script> 2document.addEventListener('keydown',function(e){ 3 var t=e.target; 4 if(t.nodeName=="INPUT" && (t.type=="text"||t.type=="radio"||t.type=="email") && e.keyCode==13){ 5 var f=t.form; 6 var k=0; 7 for(var i=0;i<f.length;i++){ 8 if(f.elements[i]==t){ 9 for(var j=1;j<=f.length;j++){ 10 var k=(i+j*(e.shiftKey?-1:1)+f.length)%f.length; 11 if(f.elements[k].type!="hidden") break; 12 } 13 f.elements[k].focus(); 14 break; 15 } 16 } 17 e.preventDefault(); 18 } 19}); 20</script> 21<form> 22<table> 23<tbody> 24<tr><td>要件:</td><td><input type="radio" name="yoken" value="問い合わせ">問い合わせ 25<input type="radio" name="yoken" value="サンプル">サンプル 26<input type="radio" name="yoken" value="その他">その他</td></tr> 27<tr><td>会社:</td><td><input type="text" name="kaisha"></td></tr> 28<tr><td>名前:</td><td><input type="text" name="namae" required>(必須)</td></tr> 29<tr><td>mail:</td><td><input type="email" name="mail" required>(必須)</td></tr> 30<tr><td>電話:</td><td><input type="text" name="denwa"> 31<input type="hidden" name="hoge1" value="fuga"> 32<input type="hidden" name="hoge2" value="fuga"> 33<input type="hidden" name="hoge3" value="fuga"></td></tr> 34<tr><td>住所:</td><td><input type="text" name="jusho"></td></tr> 35<tr><td>内容:</td><td><input type="text" name="naiyo" required>(必須)</td></tr> 36</tbody> 37</table> 38

投稿2017/08/22 03:40

編集2017/08/23 03:27
yambejp

総合スコア114843

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

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

yambejp

2017/08/22 03:46

あと、shiftキーを押しながらエンターだと逆順に回るなどの仕様はよくつかうとおもいます
associate

2017/08/22 03:54

ご回答ありがとうございます。 簡易的に実装したいだけなので、細かい点は考慮しなくてもよいかと考えております。 (tabindexについては、初期のままで、type=text以外は動作なし) form内のinput要素をエンターを押すごとに上から巡回する、というつくりが理想的です。 (name属性は出来れば項目名を入れたいので数値などは避けたいです)
yambejp

2017/08/22 04:04

一応例示したのとほぼ合致していると思います 試してみて動きが違うようならご指摘下さい
associate

2017/08/22 04:14

※質問内容にフォームの画像を追加しました。 おおよそ意図通りの動きをするのですが、メールアドレスの項目から電話番号の項目へ移動する際にフォームが送信されてしまいます。(また、電話番号から住所へ移動する際も同様です。) 電話番号の項目はtype=textです。 考えられる原因などは御座いますでしょうか?
yambejp

2017/08/22 05:39

検証しましたが問題なさそうです。 再現できないので画像ではなくhtmlテキストで貼ってもらったほうが よいかもしれません
associate

2017/08/23 02:10

ありがとうございます。 フォームが送信されてしまうポイントを確認してみたところ、原因となっていたメールアドレスの項目と電話番号の項目ですが、 メールアドレスの項目はtype=textでなく、type=emailになっていたので、頂いたソースにt.type="email"を付け足すことで解決致しました。 電話番号の項目についてですが、確認したところ項目のあとにtype=hiddenが隠れていることがわかりました。同様にt.type="hidden"と付け足したのですが解決できませんでした。 hiddenを飛ばすにはどのようにすればよいでしょうか? 度々申し訳ありません。よろしくお願い致します。
yambejp

2017/08/23 03:28

hiddenは想定外でした たしかにfocusさせられないですね 冗長な処理になりましたが対処しておきました
associate

2017/08/23 03:37

ありがとうございます。意図通りの動作となりました。 次質問する際は、もう少し勉強してからするように致します。 ご丁寧に対応頂きありがとうございました。また宜しくお願い致します。
guest

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

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

associate

2017/08/23 03:38

ありがとうございます。 参考にして勉強致します。
guest

0

単純にテキストエリア以外でエンターキーが効かなければ良いのではないでしょうか?
ページのスラッグがcontactだとして

<?php if ( is_page( 'contact' ) ){ echo '<script>$(function(){$("input").on("keydown", function(e) {if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) {return false;} else {return true;}});});</script>'; } ?>

そのページのテンプレートかheader.phpにでも書いておけば良いです。
参考まで。

追記
少し調べればいくらでも情報はあると思いますけど。
https://teratail.com/questions/14080
このページのコードそのままです。

<?php if ( is_page( 'contact' ) ){ echo '<script type="text/javascript">$(window).load(function() {$("input,select").on("keypress", function(ev){var $me = $(this);var $list = $("input:enabled:not([readonly]),select:enabled");if (ev.keyCode == 13) {$list.each(function(index){if ($(this).is($me)) {$list.eq(index+1).focus();ev.preventDefault();}});}});});</script>'; } ?>

投稿2017/08/22 04:09

編集2017/08/22 05:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

associate

2017/08/22 04:15

ご回答ありがとうございます。 目的は「エンターキーでフォームを送信することを防ぐ」ではなく「エンターキーを押した際に次のインプットへ移動する」です。 よろしくお願いします。
associate

2017/08/22 05:31

ありがとうございます。 張って頂いたトピックのコードも一通り試したのですが、上手く行きません。 恐らく、利用しているプラグインとの相性が良くないのだと考えております。 もう少し粘ってから質問するようにします。またよろしくお願い致します。
退会済みユーザー

退会済みユーザー

2017/08/22 06:01

ブラウザのデベロッパーツールでエラーが出てないかなど確認しながらやってみてください。 頑張ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問