• ベストアンサー

JavaScriptでこれ出来ますか?

すでに文字列が入っているテキストボックスにfocus()を行い、 "I"の形の文字キャレットを文字列の最後に移動させたいのですが、 ただ単に document.getElementById("TextField").focus() などとすると、文字列の最初に文字キャレットがいってしまいます。 どのようにしたら文字列の最後に文字キャレットを移動させられ ますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

focusしてから書き換えてみては? <script language="javascript"> function test(){ var tf=document.getElementById('TextField'); tf.focus(); tf.value=tf.value; } </script> <input type="text" id="TextField" value="hogehoge"> <input type="button" value="test" onClick="test()">

nihon_no_samurai
質問者

お礼

この方法でできました! ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

Opera9.21でのテスト結果ですので、他ブラウザでは挙動が違いますが、 ご質問の件、実現できました。 (1) select()メソッドで、テキストフィールド全体を選択状態にする (2) テキストフィールドの中身を書き換える (3) focus()メソッドで、テキストフィールドにフォーカスを合わせる の手順を行うと、 テキストフィールドの末尾にキャレットが移動するようです。 以下、そのソースです。 ---------- var textField = document.getElementById("TextField"); textField.select(); //(2) 適当な文字列として、文字列『0』を足した後、 // 元の文字列部分を取り出して、元に戻している textField.value += 0; textField.value = textField.value.substring(0, textField.value.length - 1); textField.focus(); ----------

nihon_no_samurai
質問者

補足

ありがとうございます! 試してみましたが、残念ながらIEでは出来ないようです・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [Javascript]onFocusで文字列選択状態にするには。

    質問が立て続けで申し訳ありません。 テキストボックスの中に文字列が入っているとします。 TABキーで移動し、その文字列の入ったテキストボックスにフォーカスが移動しますとその中に書かれたテキストボックスが選択された状態でフォーカスがいきますよね? 単純に .focus(); で移動させると選択状態にならず、書き換えたい場合は一回一回削除しなくてはいけません。 onFocusや.focus();の際に文字列を選択状態にすることは出来ませんか? 宜しくお願い致します。

  • JavaScript Eventのタイミング

    Eventの挙動を学ぶために、簡単なスクリプトを作成しました。 テキストボックスに文字列を入れて、Submitボタンを押すと、 テキストボックスの下に(innerHTMLで)入力文字が表示され、 ボタン自体も入力文字になるというものです。 しかし、テキストに文字を入力し、Submitを押してもボタン・innerHTMLともに文字は変化しません。このままリロードをすると変化します。 挙動からして、マウスクリック自体は反応していないが、リロードによりイベントハンドラが動作しているように見受けられます。 イベントハンドラはonclickに代入しているためなぜこのようになるのか わかりません。 できるだけ、JavascriptとHTMLを分離したく外だしのファイルで 実現したいと思っています。 考え方、(比較的平易な)参考資料などありましたら教えていただけないでしょうか? HTMLで<body onload="init()">として、JavaScriptでは以下のように記述しています。 function init(){ document.getElementById("button").click = change(); } function change(){ keyword = document.getElementById("keyword").value; document.getElementById("input").innerHTML = keyword; document.getElementById("button").value = keyword; }

  • 【Javascript】(テキストボックスの)テキストの末尾にフォーカスを置きたい【フォーム】

    onLoad時にテキストボックスにフォーカスをあてるのですが、 質問タイトルのようなことができません。 前ページからPOSTで持ってきた文字列を入れたテキストボックスなのですが、 BODYタグ部分にonLoad="frm.elm.focus();"と書くと、 そのテキストボックス内の文字列の先頭にフォーカスが行きます。 文字列の続きを入力する項目なので 文字列の末尾にフォーカスを置きたいのですが 方法はありますでしょうか。 ご存知の方いらっしゃいましたらご教示願います。 質問が解りづらかったらすみません。 宜しくお願い致します。

  • javascriptで編集可能不可能の切り替え

    いつもお世話になっております。 javascriptを用いて、テキストボックスを状況によって編集可能、不可能を 変更するものを作っております。 現在、テキストボックス単品ではその動作が可能となっていますが、 複数のものに対してその動作を行うには、どうすればよいかわからず困っています。 現在のソースは以下のようになっています。必要な部分だけ抜き出しています。 <script type="text/javascript"> function display() { var tmp = prompt("password?",""); //表示させるかどうか判別する if (tmp == 1) { document.getElementById("textboxのID").readOnly = false; } else if (tmp == 2) { document.getElementById("textboxのID").readOnly = true; } } </script> <body onload="display();"> ・・・・ </body> テキストが一つや二つ程度ならこれでも十分ですが、今回は テキストボックスが多数(100程度)あるので、このまま地道にやるのはどうかと思いました。 IDを数字にして、 for (var i = 0; i < 100; i++) { document.getElementById(i).readOnly = true; } とやってみましたが、これもdocument.getElementById("0") = true;単品では 成功しましたが、iが定義されていないというようなエラーメッセージが表示されて、 うまくいきませんでした。 以上の件を、ご教授お願いします。

  • JavaScriptのイベントについて

    JavaScriptを使ってページのウィンドウ上でダブルクリックをした時 テキスト1の文字列を変更するようにしたいのですが、 下記のページを読み込むとページがロードすると同時に テキスト部分が変更されてしまいます。 addEventListenerの使い方が間違えているのでしょうか。 よろしくお願いいたします。 ---------------------------------------------------------------------- <body> <a id=id1>テキスト1</a> <script> i = document.getElementById("id1"); document.addEventListener("dblclick", addEL(), !1); function addEL(){ i.innerHTML="addEventListener!"; } </script> </body>

  • JavaScript テキストボックス内のコピー

    JavaScriptのテキストボックス内の文字列のコピーを教えてください。 TextboxA、TextboxB、TextboxCがあり、TextboxAのフォーカスがTextboxBに移動した時に、TextboxA内の文字列をTextboxCにコピーする記述がわかりません。 どなたか参考になるサイト、JavaScriptの記述を教えてください。 よろしくお願いします。

  • IE8でdivのcontenteditable=trueでの擬似テキス

    IE8でdivのcontenteditable=trueでの擬似テキストボックス内から、 キャレット位置を取得しようとして、 Eclipse3.5上から、以下のJavaScript文を入力していたところ、 var elem = document.getElementById("chaTitleName2"); elem.focus(); var range = document.selection.createRange(); 「関数 createRange() は未定義です」というエラーが出ます。 このエラーを解消する方法を、ご存知の方がいらっしゃいましたら、 ぜひ教えてください。 (もしくは、他の方法で、  IE8でdivのcontenteditable=trueでの擬似テキストボックス内から、  キャレット位置を取得する方法をご存知の方がいらっしゃいましたら、  ぜひ教えてください) お世話になります。 宜しくお願い致します。

  • JavaScriptのfocus()とselect()について

    focus()やselect()では文字列全体が選択されてしまいますが、 以下のようにtext内のテキストの後にカーソルを移動できないか 考えています。 xxxxxxI JavaScriptでなんとか工夫して出来ないでしょうか?

  • Javascriptで質問です2

    セレクトボックスから選択してテキストや画像を出力する以下のコードがあるのですが、これをセレクトボックスを2段階で選択後にテキストや画像を出力したいのです。 詳しい方がいらっしゃれば、ご教示いただければ幸いです。よろしくお願いいたします。 <div class="col-auto my-1"> <label for="sample">選択してください</label> </div> <div class="col-auto my-1"> <select class="form-control" id="sample" onchange="viewChange();"> <option value="select1">one</option> <option value="select2">two</option> <option value="select3">three</option> </select> </div> <div class="col-auto my-5"> <div id="Box1" class="my-5"> <p>one</p> </div> <div id="Box2" class="my-5" style="display:none;"> <p>two</p> </div> <div id="Box3" class="my-5" style="display:none;"> <p>three</p> </div> </div> <script> function viewChange(){ if(document.getElementById('sample')){ id = document.getElementById('sample').value; if(id == 'select1'){ document.getElementById('Box1').style.display = ""; document.getElementById('Box2').style.display = "none"; document.getElementById('Box3').style.display = "none"; }else if(id == 'select2'){ document.getElementById('Box1').style.display = "none"; document.getElementById('Box2').style.display = ""; document.getElementById('Box3').style.display = "none"; } else if(id == 'select3'){ document.getElementById('Box1').style.display = "none"; document.getElementById('Box2').style.display = "none"; document.getElementById('Box3').style.display = ""; } } window.onload = viewChange; } </script>

  • ネスケで文字化けするjavascript

    下記はenterキーを押した時に次のテキストボックスなどにフォーカスを移動するjavascriptです。しかし、ネスケだとテキストボックスに入力した文字が文字化けしてしまいます。 <!-- ns4 = (document.layers)? true:false ie4 = (document.all)? true:false function cf() { for (i = 0; i < document.forms[0].elements.length; i++) { if ((ns4) && (document.forms[0].elements[i].type != "hidden") || (ie4) && (document.forms[0].elements[i].type != "hidden" )) { document.forms[0].elements[i].focus() break } } } function keyDown(e) { if (ns4) {PKey=e.which; el = e.target.type ; sk = e.modifiers} if (ie4) {PKey=event.keyCode; el = event.srcElement.tagName; sk = event.shiftKey} if (PKey == "13") { if (el.toLowerCase() != "textarea") { keyDowntest(e) return false; } else { if ((ns4) && (sk == '4') || (ie4) && (sk)) { keyDowntest(e) return false; } } } } function keyDowntest(e) { for (var i = 0; i < document.forms[0].elements.length; i++) { if ((ie4) && (document.forms[0].elements[i] == event.srcElement) || (ns4) && (document.forms[0].elements[i] == e.target)) { if ((i + 1) == document.forms[0].elements.length) document.forms[0].elements[0].focus() else for (; i < document.forms[0].elements.length; i++) { if ((ns4) && (document.forms[0].elements[i+1].type != "hidden") || (ie4) && (document.forms[0].elements[i+1].type != "hidden" )) { document.forms[0].elements[i+1].focus() break } } break } } } document.onkeydown = keyDown if (ns4) document.captureEvents(Event.KEYDOWN) //-->

ユーザー登録を変更したい
このQ&Aのポイント
  • ユーザー登録変更!今、どうする?
  • ユーザー登録を手軽に変更する方法
  • ユーザー登録変更のポイントを解説
回答を見る