onload時にテキストボックス(name="text_box")にフォーカスが当たるようにしています。
onload時にtext_boxに値が入っていれば、カーソルは右寄せにするには
どうしたらいいのでしょうか。

selectで選択状態にして逃げてみたのですが
BackSpaceキーでtext_boxの値を修正する為、右寄せにした方が
都合がいいので、できるなら右寄せ方法を取りたいと思います。

text_boxの中身の文字数を数えて、その最後の文字数分の場所に
カーソルを持っていこう、と考えてみましたが
手間がかかるのと(ってオイ)カーソルの位置指定がわからず、撃沈でした。

onload時に「右寄せ!」という具合に、楽に指定する方法はないものでしょうか?
どなたかご存知の方、教えてください。

A 回答 (2件)

Internet Explorer4以上でしか動かないと思いますが、


TextRangeオブジェクトを作って、動作させることはできます。
でも、全然ラクじゃないです。

var target = document.form[0].text_box;
var txtRange = target.createTextRange();
txtRange.move( 'character', target.value.length );
txtRange.select();

みたいな感じかな...

この回答への補足

(補足とお礼を書くところ間違えました)
ありがとうございます。
misokaさんのおかげで自分関数(笑)できました。

機会がありましたらまたよろしくお願いします(ペコリ)。

補足日時:2002/02/25 11:32
    • good
    • 0
この回答へのお礼

misokaさん、回答ありがとうございます。
varというとJavaScript内の関数でしょうか?
ヒントを頂いたので、移動関数を作ってみます。
(また質問するかもしれませんが)

機会がありましたらまた教えてください(ペコリ)。

お礼日時:2002/02/25 11:05

テキストボックス内でのカーソル位置を指定することは、できなかったと思います。



で、代替策ですが、IE5.5/NN6.2 では「フォーカスを当てた後に文字列を入れる」ことで、右寄せにできました。(NN4.7 ではダメでした。。)

function my_onLoad() {
  with (document.フォーム名) {
    text_box.focus();
    text_box.value = text_box.value;
  }
}

万能な方法ではありませんが、参考になれば。
    • good
    • 0
この回答へのお礼

leaz024さん、早速の回答ありがとうございます。
返事が遅くなってすみません。

onloadでフォーカスを当てていれば、どういう風に遷移してきても
必ず文字列を入れる前にフォーカスが当たった状態ですよね?
(何か日本語が変だ)

なのにどうしても左寄せになってしまうんです。

submitで自画面に遷移後にこの状態にしたい、というのが悪いのでしょうか?
ちなみにソース(抜粋)は

**********************************************************************
<BODY onload=test.text_box.focus()>

<%
    '=============================================================
    ' パラメータよりtext_boxの入力値を取得
    '=============================================================
      strtext_boxNo= Request.Form("text_box")
%>

<form name="test" action="test.asp?Mode=<% = Server.URLEncode(1) %>" target="_self" method="post" onsubmit="return Ftext_boxChk();">

<input type="text" name="text_box" value="<%=strtext_boxNo%>" size=7 maxlength=6 onKeyPress="FKeysPress()" style="ime-mode: inactive">

**********************************************************************

<input type>前でもう一度フォーカスを当てるとエラーが出てしまって・・・。
もうちょっとソースを読んで考えてみます。

『フォーカスを当てた後に文字列を入れると右寄せになる』というのは
大変ありがたい情報でした。

また機会がありましたらよろしくお願いします(ペコリ)。

お礼日時:2002/02/25 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q と window.onload

JavaScriptのonload処理についての質問です。

現在Java、JSP、JavaScript等でWebアプリケーションを作成しているのですが、
bodyタグ中のonloadに記載したファンクションが時々呼ばれないという問題が起きています。
(こんな感じで記述
 <body onload="hoge();hogehoge();">
 hogehoge()がたまに呼ばれないことがある・・・)

これを回避する方法として、「onload処理をwindow.onloadに記述すれば良い」
という話を聞きました。
(こんな感じで記述
 <script>
   window.onload = function(){ hoge();hogehoge(); }
 </script>


「bodyタグ中に記述するとたまに呼ばれないものが、window.onloadに記述すると確実に呼ばれる」
なんてことがあるのでしょうか?
「2つめのファンクションが呼ばれない」という現象がたまにしか発生しないので、
window.onloadに記述する方法で確実に呼ばれるようになったという保証がとれません。
知識として知っている方がいれば是非教えていただきたいです。
よろしくお願い致します。

※ブラウザはIEを使用
 バージョンは IE → 6.0
     JavaScript → 1.1 です。
 

JavaScriptのonload処理についての質問です。

現在Java、JSP、JavaScript等でWebアプリケーションを作成しているのですが、
bodyタグ中のonloadに記載したファンクションが時々呼ばれないという問題が起きています。
(こんな感じで記述
 <body onload="hoge();hogehoge();">
 hogehoge()がたまに呼ばれないことがある・・・)

これを回避する方法として、「onload処理をwindow.onloadに記述すれば良い」
という話を聞きました。
(こんな感じで記述
 <script>
   window.onload = function(...続きを読む

Aベストアンサー

><body onload="hoge();hogehoge();">
hoge()に処理を中断するような内容が書かれている可能性もあります。
そうなると、なにをやってもhogehoge()は実行されません。

また、タグにメソッドを書き込むのはHTMLとJavascriptの分離という
視点でもあまりスマートではありません。
意識してwindow.onloadを使った方がきれいなソースになります

Q外部ファイルでBODYのonloadイベントの関数を指定するには?

(1)<BODY onload="funcA()">という形でなく、
ヘッダー内に入れた外部ファイルに
(2)document.body.onload=funcA;
としたいのですが、
「document.bodyはオブジェクトではありません」
というエラーになってしまいます。

<script language="javascript" src="xx.js">は
<head></head>の中に入れています。

どうしたら(2)の方法で、
外部ファイルでbodyのonloadイベントの関数を指定できるでしょうか?

Aベストアンサー

> やってみたのですが、「htmlfile:実装されていません」というエラーになってしまいました

原因になりそうなことを、とりあえず、二つほど思いつきます。

・関数や外部スクリプトファイル自体に問題がある

onload で実行される関数をうんと単純にしてみましょう。例えば、xx.js の中身を

function funcA() {
  alert("test");
}
document.body.onload=funcA;

だけにしてしまう。

これは、動くはずです。さっきの解答を書くときに確認したから。

・ハンドラの指定の書式が違う

document.body.onload=関数名 という書式は IE だけです。NN4.7x では無効な
書き方です(でも、違うエラーが出るはず)。

# NN6.x は手近にないので、確認できません。

Qが実行されません

いつもお世話になります。
下記java scriptにて画像(4枚)をランダムに表示させるようにしたいのですが、
なぜか<body onload="display_image()">が実行されず表示されません。
これを新規で移せば実行されるのですが、作成中のHTML上ではなぜか文字色がグレーとなり実行されません。

アドバイスお願い致します。

<div align="center"><br />


<Script type="text/javascript">
<!--
var iValue, rNumber;
var img1 = new Image();
var img2 = new Image();
var img3 = new Image();
var img4 = new Image();
img1 = "img/img1.jpg";
img2 = "img/img2.jpg";
img3 = "img/img3.jpg";
img4 = "img/img4.jpg";
function display_image(){
iValue = Math.random() * 4;
rNumber = Math.ceil(iValue);
if(rNumber==0) rNumber++;
document.image1.src=eval("img" + rNumber);
}
//-->
</Script>

<body onload="display_image()">


<img src="image8" name="image8" width="700" height="400" id="image8" /></div>
</Body>

いつもお世話になります。
下記java scriptにて画像(4枚)をランダムに表示させるようにしたいのですが、
なぜか<body onload="display_image()">が実行されず表示されません。
これを新規で移せば実行されるのですが、作成中のHTML上ではなぜか文字色がグレーとなり実行されません。

アドバイスお願い致します。

<div align="center"><br />


<Script type="text/javascript">
<!--
var iValue, rNumber;
var img1 = new Image();
var img2 = new Image();
var img3 = new Image();
var img4 =...続きを読む

Aベストアンサー

とりあえずタグの入れ子を直しても動かないという前提で

>img1 = "img/img1.jpg";
→img1.src = "img/img1.jpg";
new Imageとしているならこうしないと×
後のdocument.image8への代入も既にimageオブジェクトなのでdocument.image8.srcとする必要なし。

//あとこういう場合は配列使おう。楽になるよ
var a_img = ["img/img1.jpg","img/img2.jpg","img/img3.jpg","img4.jpg"];
document.image8.src = a_img[Math.floor(Math.random()*a_img.length)];

evalは可能な限り使わない方が良い

Qマウスカーソルを画像や文字に重ねるとカーソルのすぐ右下に画像を表示する

マウスカーソルを画像や文字に重ねるとカーソルのすぐ右下に画像を表示するようにしたいのですが、どのようなHTMLタグやjavascriptを使えばいいですか?

Aベストアンサー

4つ上の質問と似ていますね。
 http://oshiete1.goo.ne.jp/qa4606506.html
そこで質問されているライブラリを利用すれば、比較的簡単かと…

残念ながら、ライブラリのHPがつながりませんが、サンプルページが残っていましたので
 http://boxover.swazz.org/example.html​

QBackSpaceしたい

firefox使っています。
フォームのTEXT表示においてclickボタンで
後から1文字ずつ削除したいです。
(キーボードのBackSpace)
できますでしょうか?

Aベストアンサー

できますとも!

(1)クリックするボタンに「onClick=~」を追加する。~の部分には javascriptの関数名。

(2)その関数内には「(いま入っている値がn文字とすると)先頭からn-1文字目までを切り取って、いまある値と置き換えよ」という命令を書く。

これで、バッチリです。


人気Q&Aランキング

おすすめ情報