
SendKeys()が一番最後に実行されてしまう。
コマンドボタン(<input type="button onclick="jidou();">)をクリックすることで、
<form>内の<textarea>に、連続して文字を自動入力させようとしています。
このとき、挿入する文字の途中に、何度かSendKeys("{ENTER}")を挟んで改行をさせているのですが、なぜか、全ての文字がセットされたあとで、最後にまとめて、改行(SendKeys("{ENTER}"))されてしまいます。
解決に行き詰っています。どなたかご存知の方、ご教授願えないでしょうか。
よろしくお願いします。
function jidou()
{
:
(文字挿入)
:
var wsh = new ActiveXObject("WScript.Shell");
document.getElementById("textarea1").focus();
wsh.SendKeys("{ENTER}");
wsh=null;
:
(文字挿入)
:
}
No.8ベストアンサー
- 回答日時:
単純に・・・
ボタンを押したらtextareaに改行入りの定型文を挿入したいってこと?
<script type="text/javascript">
function insText(id,text){
var T=document.getElementById(id);
T.focus();
if(window.getSelection) {
var pos = T.selectionStart;
var t1 = T.value.substring(0,pos);
var t2 = T.value.substring(pos);
T.value = t1 + text + t2;
} else {
var s = document.selection.createRange();
s.text = text;
}
}
</script>
<p>
<input type="button" value="あ行" onclick="insText('hoge','あ\nい\nう\nえ\nお')">
<input type="button" value="か行" onclick="insText('hoge','か\nき\nく\nけ\nこ')">
</p>
<p>
<textarea id="hoge" cols="40" rows="10"></textarea>
</p>
この回答への補足
ご回答ありがとうございます。
>ボタンを押したらtextareaに改行入りの定型文を挿入したいってこと?
ご指摘の通りです。言葉足らずで大変失礼しました。
そして、steel_gray様のご回答に従い、コーディングしましたら、
無事うまくいきました。
大変勉強になりました。ありがとうございました。
No.7
- 回答日時:
あ~あ
否定の先読み(!パターン)
肯定の先読み(=パターン)
グループ化のみ(?パターン)
の3つはjavascriptでも使えるんですね。
先週気づいてたら、別のやつにも使えたのに...残念
この回答への補足
yyr446様、think49様、ご回答、誠にありがとうございます。
また、ご連絡が遅れましたことをお詫び申し上げます。
御二方のご回答ともに、
<textarea>内にすでに文字が入力されている状態で、その中の特定の文字の後ろを改行させるやりかたですね。
やはり、yyr446様のご回答のとおり、
>ブラウザーがjavascriptの1ステートメント実行中に、外から割り込んでも、
>そのステートメントが終わるまでは、受け付けられません。
ということで、途中でSendKeysを実行できないのですね。
そして、別の方法として、一旦、<textarea>に文字を入力して、そのあとに改行させるというやり方になるわけでしょうか。
しかし、その場合、同じ文字でも改行させてたくない場合でも、改行されるということでしょうね。
解決策としては、このあたりなのでしょうね。
私と希望としては、1つのボタンクリックで
文字入力+改行+文字入力+改行+文字入力+・・・
を一気に入力したかったのですが、今回はこの方法はあきらめ、お二方のご回答を参考にして対応します。
しかしながら、皆様のご回答には大変勉強になりました。
本当にありがとうございました。
No.6
- 回答日時:
ちょっとは入り込みにくい雰囲気ですが、書きだしたい欲求には勝てませんでした…。
(苦笑)(全角空白は半角空白に置換してください)
------
<script type="text/javascript"><!--
function add_Kaigyo(event, targetId, search){
var button = event.target || event.srcElement;
var doc = button.ownerDocument;
var target = doc.getElementById(targetId);
// target.value = target.value.split(search).join(search+"\n");
target.value = target.value.replace(new RegExp(search+"(?!\n)", 'g'), search+"\n");
}
//--></script>
</head>
<body>
<form>
<p><textarea id="hoge" cols="80" rows="30">foo test hoge test
hello test</textarea></p>
<p><input type="button" value="改行を挿入する" onclick="add_Kaigyo(event, 'hoge', 'test');"></p>
</form>
------
"test\n" を置換対象から除外したいなら、このまま。
そうでないなら、コメントアウトしたコードにすればOKです。
No.5
- 回答日時:
というわけで、
後からの処理になりますが、任意の<textarea>内の任意の文字の後ろに「改行」を
セットする関数を作りました。
※コードの全角空白は半角空白にかえて下さい。
function add_Kaigyo(target,search){
var Regexp = new RegExp("");
Regexp.compile(search,"g");
var target_str=target.value;
var new_str=target_str.replace(Regexp,function(){
if(RegExp.rightContext.charAt(0)!="\n")
return arguments[0]+'\n';
else return arguments[0];
});
Regexp = null;
target.value=new_str;
}
使い方の例、
<textarea id="hoge" cols="80" rows="30"></textarea>
を対象として、「。」の後ろで改行を挿入したい場合、
var search="。"; // <=正規表現パターンでも指定可能!
var target=document.getElementById("hoge");
add_Kaigyo(target,search);
と使えます。
No.4
- 回答日時:
No1.2.3の回答者です。
「Sendkeysコマンドは一番最後に実行されてしまうのを解決したい」です。
==>
肝心な事を書き忘れてました。
ブラウザーがjavascriptの1ステートメント実行中に、外から割り込んでも、
そのステートメントが終わるまでは、受け付けられません。OSレベルで
フォースすれば止まらなくはないですが、ブラウザー強制終了という事になります。
よって、別案を提示しようとしている次第です。
No.3
- 回答日時:
「
:
(文字挿入)
:
」
部分のコードを少しでも書いてください。でないと意味が解りません。
「コマンドボタン(<input type="button onclick="jidou();">)をクリックすることで、
<form>内の<textarea>に、連続して文字を自動入力させようとしています。」
と矛盾してませんか。自動入力ってだれがするのですか、全部キーストローク送出で
自動入力させてるのですか?
補足:
ベストアンサー下さいね!
この回答への補足
再三のご回答ありがとうございます。
>部分のコードを少しでも書いてください。
たとえば、
selection.text = "あああ";
理解不足で大変申し訳ございませんが、
>矛盾してませんか。
の意味がわかっていません。教えていただけませんか。
>だれがするのですか
この<textarea>に入力する人、つまり、システム利用者です。
>全部キーストローク送出で自動入力させてるのですか?
手入力もあります。定型的な部分をボタンで一括入力させたいのです。
>ベストアンサー下さいね!
期待しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをクリックして文字を置...
-
onchangeイベントを強制的に発...
-
開いた子ウィンドウにあるボタ...
-
innerHTML内では改行は禁止?
-
BackSpaceしたい(QNo.2734284の...
-
JavaScriptのfileオブジェクト...
-
クリックさせたいが、click()が...
-
javaScriptの変数をJavaの変数...
-
SendKeys()が一番最後に実行さ...
-
プルダウンで選択すると、DBの...
-
【jQuery】input nameの文字列...
-
【jsp/Java】チェックボックス...
-
return trueとreturn falseの用...
-
テーブルの項目の値取得
-
プルダウン 項目が多いので先頭...
-
スマホのフォームでのselect複...
-
画面表示とともにtableの指定の...
-
checkboxをクリックしてリロー...
-
ラジオボタンでクリックした値...
-
ボタン無しでフォーム内容送信
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavaScriptのfileオブジェクト...
-
javaScriptの変数をJavaの変数...
-
VB.NETで<Input>タグ、<text...
-
onclickが動作しない
-
formのfileの値をhiddenでも持...
-
追加ボタンを押した際に ok ボ...
-
クリックさせたいが、click()が...
-
onClickがinput type="image"だ...
-
BackSpaceしたい(QNo.2734284の...
-
同じページでgetElementsを複...
-
Javascriptでフィールドを埋め...
-
困っています。
-
「ボタン」の幅の長さ
-
JavaScriptのロジック?
-
<input type="file"/>
-
CHECKBOXとTEXTBOXのnameが同じ...
-
vbscriptでIE自動入力(コンボ...
-
setIntervalについて
-
JQueryでfunctionに引数としてI...
おすすめ情報