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

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

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

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

Q&A

解決済

2回答

1873閲覧

ループで処理

msz006

総合スコア66

JavaScript

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

0グッド

0クリップ

投稿2016/09/20 05:31

編集2016/09/21 01:19

//「年」でEnterキーが押された時
$('input[name=txtYear1]').keypress( function (e) {
if ( e.which == 13 ) {
// 「月」にフォーカスを当てる
$('input[name=txtMonth1]').focus();
return false;
}
});

//「月」でEnterキーが押された時 $('input[name=txtMonth1]').keypress( function (e) { if ( e.which == 13 ) { // 「日」にフォーカスを当てる $('input[name=txtDay1]').focus(); return false; } }); //「日」でEnterキーが押された時 $('input[name=txtDay1]').keypress( function (e) { if ( e.which == 13 ) { // 「」にフォーカスを当てる $('input[name=txtYear2]').focus(); return false; } });

//「年」でEnterキーが押された時
$('input[name=txtYear2]').keypress( function (e) {
if ( e.which == 13 ) {
// 「月」にフォーカスを当てる
$('input[name=txtMonth2]').focus();
return false;
}
});

//「月」でEnterキーが押された時 $('input[name=txtMonth2]').keypress( function (e) { if ( e.which == 13 ) { // 「日」にフォーカスを当てる $('input[name=txtDay2]').focus(); return false; } }); //「日」でEnterキーが押された時 $('input[name=txtDay2]').keypress( function (e) { if ( e.which == 13 ) { // 「」にフォーカスを当てる $('input[name=txtYear3]').focus(); return false; } }); //「年」でEnterキーが押された時 $('input[name=txtYear3]').keypress( function (e) { if ( e.which == 13 ) { // 「月」にフォーカスを当てる $('input[name=txtMonth3]').focus(); return false; } }); //「月」でEnterキーが押された時 $('input[name=txtMonth3]').keypress( function (e) { if ( e.which == 13 ) { // 「日」にフォーカスを当てる $('input[name=txtDay3]').focus(); return false; } }); //「日」でEnterキーが押された時 $('input[name=txtDay3]').keypress( function (e) { if ( e.which == 13 ) { // 「」にフォーカスを当てる $('input[name=txtYear1]').focus(); return false; } });

上記の処理をループ文を使って下記のコードを書いてみました

for (var i = 1; i < 3; i++) {
//「年」でEnterキーが押された時
$('input[name=txtYear + i]').keypress( function (e) {
if ( e.which == 13 ) {
// 「月」にフォーカスを当てる
$('input[name=txtMonth + i]').focus();
return false;
}
});

//「月」でEnterキーが押された時 $('input[name=txtMonth + i]').keypress( function (e) { if ( e.which == 13 ) { // 「日」にフォーカスを当てる $('input[name=txtDay + i]').focus(); return false; } }); //「日」でEnterキーが押された時 $('input[name=txtDay + i]').keypress( function (e) { if ( e.which == 13 ) { // 「」にフォーカスを当てる $('input[name=txtYear + i + 1]').focus(); return false; } });

}

実行すると
Error: Syntax error, unrecognized expression: input[name=txtYear + i]

と表示されます

'input[name=txtYear + i]' この部分の文法(書き方が悪い)のは解るのですが、対応方法が解らず投稿しました

よろしくお願いします

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

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

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

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

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

kei344

2016/09/20 05:51

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
aglkjggg

2016/09/20 07:27

msz006氏はマルチポストや自分で調べもせず何度も質問を行っていますね。
guest

回答2

0

この手の処理はnameで判断するのではなくtabindexで処理したほうが良いのでは?

javascript

1$(function(){ 2 $('input[type=text]').on('keydown',function(e){ 3 if(e.keyCode==13){ 4 var ti=parseInt($(this).prop('tabindex')); 5 if(ti<=0) return false; 6 var flg=(typeof $('input[tabindex='+(ti+1)+']').get(0)!=="undefined"); 7 $('input[tabindex='+(flg?ti+1:1)+']').focus(); 8 } 9 }); 10}); 11

HTML

1<form> 2年1:<input type="text" name="txtYear1" tabindex="1"><br> 3月1:<input type="text" name="txtMonth1" tabindex="2"><br> 4日1:<input type="text" name="txtDay1" tabindex="3"><br> 5年2:<input type="text" name="txtYear2" tabindex="4"><br> 6月2:<input type="text" name="txtMonth2" tabindex="5"><br> 7日2:<input type="text" name="txtDay2" tabindex="6"><br> 8年3:<input type="text" name="txtYear3" tabindex="7"><br> 9月3:<input type="text" name="txtMonth3" tabindex="8"><br> 10日3:<input type="text" name="txtDay3" tabindex="9"> 11<input type="submit" name="go"><br> 12dummy1:<input type="text" name="dummny1"><br> 13dummy2:<input type="text" name="dummny2"><br> 14dummy3:<input type="text" name="dummny3"><br> 15</form>

投稿2016/09/21 02:57

yambejp

総合スコア114839

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

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

0

ベストアンサー

ループでやるのも良いと思いますが、
上記のサンプルを実現するのであれば、DOM構造も含めて整理すれば、以下のコードで済みませんか?

//「日」でEnterキーが押された時
$('input.keychk').keypress( function (e) {
if ( e.which == 13 ) {
// 「」にフォーカスを当てる -> 次のコントロールにフォーカスを移動すると解釈、DOM構造もそのように設定する
$(this).next().focus();
return false;
}
});

投稿2016/09/20 05:54

t_obara

総合スコア5488

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問