
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で質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS Windowsのformでtextareaに入力すると改行が反映されません 2 2023/06/01 11:50
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックさせたいが、click()が...
-
onclickが動作しない
-
VB.NETで<Input>タグ、<text...
-
onchangeイベントを強制的に発...
-
JavaScriptのfileオブジェクト...
-
インラインフレームから親ウィ...
-
onClickがinput type="image"だ...
-
javascriptでtextareaに文字列...
-
javaScriptの変数をJavaの変数...
-
return trueとreturn falseの用...
-
プルダウンで選択すると、DBの...
-
onClickとsubmitの処理順序
-
条件により、リンク先に画面遷...
-
ボタンを押すとチェックボック...
-
【jQuery】input nameの文字列...
-
Selectの中身をfor文で入れる
-
確認ダイアログの出し方(JavaS...
-
1つのform内に2つのsubmitボタ...
-
VB.NET DateTimeの型について
-
<input>の選択肢をプルダウンメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavaScriptのfileオブジェクト...
-
クリックさせたいが、click()が...
-
javaScriptの変数をJavaの変数...
-
innerHTML内では改行は禁止?
-
VB.NETで<Input>タグ、<text...
-
BackSpaceしたい(QNo.2734284の...
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
ボタンかリンクをクリックする...
-
WordpressのCocoonというテーマ...
-
フォームのNAMEを変数に格納し...
-
JavaScriptでの足し算処理について
-
インラインフレームから親ウィ...
-
タグ実験で
-
リスト追加
-
localStorage
-
javascriptでtextareaに文字列...
-
onClickがinput type="image"だ...
-
ボタンで配列に代入
おすすめ情報