テキストボックスのカーソルの位置を知るには?
[上に]
[前に]
[次に]
poyopoyo
2000/06/02(金) 11:43:06
こんにちは、よろしくお願いいたします。
JavaScriptで、テキストボックスに記入するときに、
よく使用する文字列をボタンで挿入させたいと思っています。
テキストボックスのカーソルの位置に挿入させたいのですが、
カーソルの位置を知る方法はありますか?
今は、下記のように、入力された文字列の後ろに挿入させています。
長文ですみませんが、ソースを書きます。
--ここからソース--
<HTML>
<HEAD>
<TITLE>例</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
msg=new Array();
msg[0]='株式会社';
msg[1]='有限会社';
msg[2]='(株)';
function OfficeButton(indexNo)
{
document.form1.fmsg.value=document.form1.fmsg.value+msg[indexNo]
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<TABLE BORDER="0" ALIGN="center">
<FORM NAME="form1">
<TR><TD><INPUT TYPE="text" NAME="fmsg" VALUE="" size="64" maxlength="64"></TD></TR>
<TR><TD><INPUT TYPE="button" NAME="0" VALUE=" 1 " onClick="OfficeButton(0)"> 株式会社</TD></TR>
<TR><TD><INPUT TYPE="button" NAME="1" VALUE=" 2 " onClick="OfficeButton(1)"> 有限会社</TD></TR>
<TR><TD><INPUT TYPE="button" NAME="2" VALUE=" 3 " onClick="OfficeButton(2)"> (株)</TD></TR>
</FORM>
</TABLE>
</BODY>
</HTML>
--ここまでソース--
よろしくお願いいたします。
Duck
2000/06/02(金) 12:23:51
これって、ボタンをクリックした瞬間にテキストボックスは
フォーカスを失ってしまいますよね。
だから
>テキストボックスのカーソルの位置に挿入させたいのですが、
>カーソルの位置を知る方法はありますか?
っていうのは無理じゃないですか?
(間違ってたらごめんなさい)
nobut
[E-Mail]
[HomePage]
2000/06/02(金) 23:54:12
テキストボックスに入っていた文字列を一度変数xに退避させて
function OfficeButton(x){
if(x == 0)x = x + "株式会社";
else(x == 1),,,,
,,,
document.form1.fmsg.value = x;
}
これじゃだめかな。
意味間違えてたらすみません。
nobut
2000/06/02(金) 23:55:47
訂正
function OfficeButton()ですね。
Mugi
[E-Mail]
[HomePage]
2000/06/03(土) 10:21:05
カーソル位置取得は、IEならTextRangeを使ってできます。
http://hp.vector.co.jp/authors/VA013453/js/index.htm
68番が参考になるかも。
Mugi
[E-Mail]
[HomePage]
2000/06/03(土) 13:21:43
サンプル作ってみました。
http://www06.u-page.so-net.ne.jp/wa2/mugi/tmp/000603.htm
IE専用。
こういうことじゃなかったらごめんなさい。
poyopoyo
2000/06/05(月) 10:16:22
poyopoyoです。
回答ありがとうございます。>ALL
Mugiさんのサンプル見させていただきました。
こういうことがしたいのですが、
Netscapeでは実現不可なのですか?
(運営上、Netscape利用者も想定しているため)
よろしくお願いいたします。
Duck
2000/06/05(月) 12:16:15
サンプル作ってみました。
********************************************
<HTML>
<HEAD>
<TITLE>例</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var iText = 0;
msg=new Array();
msg[0]='株式会社';
msg[1]='有限会社';
msg[2]='(株)';
var tname = new Text();
function OfficeButton(indexNo)
{
document.form1.elements[iText].value = document.form1.elements[iText].value + msg[indexNo];
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<TABLE BORDER="0" ALIGN="center">
<FORM NAME="form1">
<TR><TD><INPUT TYPE="text" NAME="fmsg1" VALUE="" size="64" maxlength="64" onFocus='iText = 0'></TD></TR>
<TR><TD><INPUT TYPE="text" NAME="fmsg2" VALUE="" size="64" maxlength="64" onFocus='iText = 1'></TD></TR>
<TR><TD><INPUT TYPE="button" NAME="0" VALUE=" 1 " onClick="OfficeButton(0)"> 株
式会社</TD></TR>
<TR><TD><INPUT TYPE="button" NAME="1" VALUE=" 2 " onClick="OfficeButton(1)"> 有
限会社</TD></TR>
<TR><TD><INPUT TYPE="button" NAME="2" VALUE=" 3 " onClick="OfficeButton(2)">
(株)</TD></TR>
</FORM>
</TABLE>
</BODY>
</HTML>
********************************************
どうでしょう?
こういうことじゃないかな。
poyopoyo
2000/06/07(水) 11:02:06
[[解決]]
poyopoyoです。
サンプルありがとうございます。>Duckさん
Duckさん> どうでしょう?
Duckさん> こういうことじゃないかな。
せっかくサンプルを投稿していただいたのですが、
私の実現したい動作とはちょっと異なります。
すみません。m(__)m
「TextRange」についてもう少し調べてみます。
どうもありがとうございました。>ALL
[上に]
[前に]
[次に]