マンガでよめる痔のこと・薬のこと

対象ブラウザはGoogle Chromeです(IEでは解決済み)
textareaのボックス内で、現在キャレットが位置する行インデックスを
取得したいのですが、どうすればよいでしょうか。

最終的にやりたいのはオートインデントです。
textarea内でEnterキーを押した時に、その行の先頭のスペースの数を調べて
次の行の先頭に同じ数のスペースを自動で挿入します。
このため、Enterキーを押した瞬間の行インデックスを取得する必要があります。
その後の処理であるスペースの挿入は方法が分かっているので問題ありません。

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

http://www.openspc2.org/reibun/javascript/

ここのサイトを紹介しておきます。
Chromで動くかどうかは分かりませんが
欲しいものが見つかるかも?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
残念ながら参考になりそうなサンプルはありませんでしたが、
自己解決しましたので、コードをここに載せておきます。

var textAreaElement = document.getElementById("TxtHoge");
// 一時的にテキスト選択範囲の始点をtextareaの先頭にして、
// 現在のキャレット位置までの文字列を取得し、改行コードで分割する
textAreaElement.selectionStart = 0;
var sel = document.getSelection() + "";
textAreaElement.selectionStart = textAreaElement.selectionEnd;
var lines = sel.split("\n");
var curLineText = lines[lines.length - 1];

お礼日時:2011/06/30 19:11

このQ&Aに関連する人気のQ&A

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

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

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

Q[Javascript]TEXTAREAで改行させるには?

こんにちは。
name="memo" となっている TEXTAREA があるとします。

document.myForm.memo.value = "aaa";
としましたら aaa が TEXTAREA に表示されます。

今回は・・・
aaa
bbb
というように、間に改行を入れて表示させたいと考えています。

"aaa" と "bbb" の間に改行のコマンド的なものを挟めばいいとは思うのですが・・・

わかりません・・・宜しくお願い致します。

Aベストアンサー

こんにちは

document.myForm.memo.value = "aaa\nbbb";
とすれば良いです。
\nは改行コードです。

ご確認ください。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QJava Scriptによるテキストエリア内での改行

Java Scriptでテキストエリアに文字を書き込む方法で、
フォーム名.テキストエリア名.value = "文字&文字"
と書けば、テキストエリアに文字&文字を書き込んでくれます。
でも、こうすると、改行ができません。

どうすれば、改行ができるようになるのでしょうか?

Aベストアンサー

こんばんは

改行したいところに\nを入れれば良いと思われます。

<HTML>
<SCRIPT LANGUAGE=JavaScript>
<!--
function test()
{
fm.ta.value = "文字\n文字" ;
}
// -->
</SCRIPT>
<FORM NAME=fm>
<TEXTAREA NAME=ta COLS=100 ROWS=10>
</TEXTAREA>
<INPUT TYPE=button NAME=bt VALUE="入力" onClick=test()>
</FORM>
</HTML>

で入力ボタンを押すと

文字
文字

と改行されてテキストエリアに表示されると思います。

Q【正規表現】【javascript】CR、CR・LF、LF改行コードをLFにしたい

CR、CR+LF、LFのシステムによって異なる3種類の改行コードを
LFに置換したいです。

変数hogeに置換対象の文字列が入っているとして、
hoge.replace(/\r\n/g,"\n").replace(/\r|\n/g,"\n");
とreplaceを使って置換してみました。

うまくいってるようですが、replaceを二度使ってるところが、カッコ悪いなぁと思います。

replace一回ですむような方法がありましたら教えてください。

Aベストアンサー

hoge.replace(/\r\n?/g,"\n");

Qテーブル内の文字サイズを変更したい。

HTMLのテーブル内の文字サイズを変更したいのですが。
イマイチ上手くいかずに悩んでいます。
出来れば全体的に<TABLE></TABLE>のほうでいじれますか?
<TD>タグや<TR>タグのところでいじくるのですか?

Aベストアンサー

いろいろやり方はありますが
文字単位でサイズを変更するには
#2の方法ですね。

テーブルごとやセル(<TD>)ごとにサイズを変更するには
スタイルシート(CSS)を使用します。

テーブルごとにサイズを変更する場合
<TABLE style="font-size : 20px;">

セル(<TD>)ごとにサイズを変更する場合
<TD style="font-size : 20px;">あああ</TD>

#1の方法だとページ内の全てのセル(<TD>)に設定することになります。

スタイルシート(CSS)はこれら以外にも
いろいろな設定方法があります。

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

Qjavascriptを使ったページ内の特定文字の置き換え

ブラウザーにページを表示させたときに一部の特定の文字だけを違った文字に置き換えたいと思っています。

ページ全体の該当文字ならば、
<script type="text/javascript">
<!--
document.body.innerHTML=document.body.innerHTML.replace(/置換前/g,'置換後');focus();
// -->
</script>
でページ全体の文字が置換できるのですが、下のケースのように一部の場所(DIV内)の場合はどのようにすればよろしいのでしょうか。

<html>


<div class="sample">
<a href="hogehoge">置換前</a>
</div>


</html>

よろしくお願いいたします。

Aベストアンサー

ターゲットが<div>に限られるなら・・・

var allTags = document.getElementsByTagName('div');
for (var i=0;i<allTags.length;i++){
if(allTags[i].className=="sample"){
allTags[i].innerHTML=allTags[i].innerHTML.replace(/置換前/g,'置換後');
}
}

でいいんじゃ、じゃないかしらん??

div に idプロパティが付いていれば、

document.getElementById('xxx').innerHTML.replace(/置換前/g,'置換後');

で、一発だけど・・・。

Qhtmlのfileタグに自動で値を入れる方法

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。

とりあえず(だめだとは思っていたのですが)
<input type="file" value="ファイルパス" name="filepath">
と直書きにしてみたり
document.all.filepath.value = "ファイルパス";
などとしてみたりしましたがだめでした…。
W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。

このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか?
もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。

ちなみに実現できればいい環境は
WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。
できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉...続きを読む

Aベストアンサー

やっぱ無理じゃないでしょうか。
なにか裏ワザ的な方法で一時的にできたとしても、いつか直されるかもしれないのでおいそれとは使えないし。

>W3C勧告の使用上はvalueでファイルパスを指定できるようになっている
→参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。

参考URL:http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#forms-security

QCSSでボックス幅を文字列に合わせたい

ボックス幅を文字列の幅に合わせるにはどうしたらいいのでしょうか。
テーブルではセルにwidth属性を指定しなくても文字列の幅になりますが、ボックスではwidthプロパティを指定しなかったら領域全体の幅になります。white-spaceプロパティでnowrap指定し、widthプロパティで文字列より小さいサイズに指定するとできるのですが、他に指定する方法があれば教えて下さい。

Aベストアンサー

div等のblock要素ではなくspan等のinline要素によって行う。

<span style="border:solid 1px">文字幅に合わせた枠線</span>

QJavaScriptでこれ出来ますか?

すでに文字列が入っているテキストボックスにfocus()を行い、
"I"の形の文字キャレットを文字列の最後に移動させたいのですが、

ただ単に
document.getElementById("TextField").focus()
などとすると、文字列の最初に文字キャレットがいってしまいます。

どのようにしたら文字列の最後に文字キャレットを移動させられ
ますでしょうか?

Aベストアンサー

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()">


人気Q&Aランキング