
こんにちは。
htmlページで<input type="text"/>に既定の桁数を入力したら次のinputにフォーカスを
移動させたいと考えています。
下の例の場合、1番目のテキストボックスに既定の桁数5ケタを入力したら、フォーカス
を2番目のテキストボックスに移動させ、2番目のテキストボックスに4ケタ入力したら
3番目のテキストボックスにフォーカスを移動させるようにしたいと思っています。
スクリプトの再利用ができるよう、たとえば同じname属性を与えればその範囲内で
簡単にフォーカスを移動させられるようなものにしたいと思うのですが、うまくいきません。
何か良い書き方はありませんでしょうか?
<div>
<input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="4" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="2" onkeyup="test(this)"/>
</div>
・
・
<script type="text/javascript">
function test(elm) {
if (elm.value.length >= elm.maxLength) {
/*(気持ちとしては、ここにこのような感じのことを書きたいのですが・・・)
var arr_elm = document.getElementsByName(elm.name);
var n = elm.index + 1
arr_elm[n].focus();
*/
}
}
</script>
No.2ベストアンサー
- 回答日時:
最後までいったらどうするのでしょう?
<script>
function test(elm) {
var n=elm.form.elements[elm.name];
if (elm.value.length >= elm.maxLength) {
for(var i=0;i<n.length;i++){
if(n[i]==elm){
if(n[i+1]) n[i+1].focus();
}
}
}
}
</script>
<form>
<div>
<input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>
<input type="text" name="fuga" maxlength="4" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="4" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="5" onkeyup="test(this)"/>
<input type="text" name="hoge" maxlength="2" onkeyup="test(this)"/>
<input type="text" name="fuga" maxlength="3" onkeyup="test(this)"/>
</div>
</form>
お礼遅くなりましてすみません。
ありがとうございました。
if(n[i]==elm){
という評価が動作するんですね。
おかげで助かりました。
最後までいったら別な関数を呼び出して入力チェックし、
別な処理コードへ入力結果を投げるつもりです。
その後、focus(またはselect)で最初に戻るかどうかは、
全体の使いやすさを見ながら決めようと思っています。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
すみません、一応ソースを載せておきます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>【OKWave回答サンプル集】テキストボックスのフォーカス移動</title>
<link rel="stylesheet" href="/okwave/qa/css/basic.css" type="text/css" />
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">google.load('jquery','1');</script>
<script type="text/javascript">
$().ready ( function() {
$('input.automove').each ( function(index) {
$(this).keyup ( function(event) {
if ( $(this).val().length >= $(this).attr('maxlength') ) {
$(this).next().focus().select();
}
}).width($(this).attr('maxlength')*8);
});
});
</script>
<style type="text/css">
.automove {
border: solid 1px #666;
}
</style>
</head>
<body>
<h1>テキストボックスのフォーカス移動(q7533730)</h1>
<form id="form-test1">
<input type="text" name="hoge" maxlength="5" class="automove" />-
<input type="text" name="hoge" maxlength="4" class="automove" />-
<input type="text" name="hoge" maxlength="5" class="automove" />-
<input type="text" name="hoge" maxlength="2" class="automove" />
</form>
<form id="form-test2">
<input type="text" name="hoge" maxlength="2" class="automove" />-
<input type="text" name="hoge" maxlength="3" class="automove" />-
<input type="text" name="hoge" maxlength="4" class="automove" />-
<input type="text" name="hoge" maxlength="5" class="automove" />
</form>
</body>
</html>
<!-- q7533730 -->
ご回答ありがとうございます。
jQueryについては全くの勉強不足・・といいますか、
正直言いまして未知の世界です。
いただいたソースファイルは、まさに期待通りの
動きをしてくれました。
参考にさせていただきたいと思います。
ありがとうございます。感謝いたします。
No.1
- 回答日時:
こんにちは。
jQueryを利用して作ってみました。
(jQueryを利用できない、利用したくないという状況であればすみません)
==== 動作サンプル
http://hppg.moe.hm/okwave/qa/q7533730/
class="automove"を与えたinputに対してmaxlengthを取得して文字数と判定して次のオブジェクトに対してフォーカスを当てています。
tabキーで遷移時の処理は省いていますのでそのへんはうまく実装してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大文字か小文字かを判断する方法
-
TextBoxに半角数字以外を入れた...
-
JavaScriptで作ったアプリが正...
-
function名の変更はできますか?
-
セレクトメニューの値の取得
-
HTMLのフォーム名とJavaScript...
-
追加ボタンを押した際に ok ボ...
-
Java Scriptで・・・
-
プルダウンメニューの項目で1つ...
-
tableの任意行にfocusをあてる
-
JavaScriptで次のような動作を...
-
特定<table>内の<td>の色を変える
-
チェックボックス付きのテーブ...
-
Visual Studioのデザインでの非...
-
イベント発生時に入力待ち状態...
-
slickのレスポンシブ > center...
-
フォームの送信ボタンを画像に...
-
別ウィンドウへのsubmitの挙動...
-
return trueとreturn falseの用...
-
3つ以上の数値の中から、最も...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページ間で変数を保持したい
-
マイナスなら赤字で表示したい...
-
TextBoxに半角数字以外を入れた...
-
tabindexの取得
-
HTMLファイル同士での値渡し
-
【Javascript】(テキストボッ...
-
プルダウンで選択された値を別...
-
テキストボックスに入力した色...
-
SHIFT + TABキーの...
-
VBScriptでpingを実行(ブラウザ...
-
一部Enter無効化の方法を教えて...
-
クリック→フォーカスのある場所...
-
クッキーによる複数のデータ取得
-
JSPでonChangeを強制発行するに...
-
Request.Form(key)の中身をクリ...
-
フォーカスが外れた時の入力チ...
-
選択したたラジオボタンの値をS...
-
GetElementByIdがうまく取得で...
-
テキストボックスの値が変更に...
-
JSで一つのボタンを押したとき...
おすすめ情報