![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
コマンドボタンでショットカットキーを実行。
<form name="frm1" method="POST" action="・・・">
<TEXTAREA name="t1" cols=50 rows=10></TEXTAREA>
<INPUT type="button" value="undo" name="b1" onclick="undo();" width="54" height="0" alt="アンドゥー">
:
</form>
↑このフォームで、「undo」ボタンが押されたときに、
<TEXTAREA></TEXTAREA>内のデータをアンドゥ、
つまり、ショットカットの「crtl+z」を実行するようにしたいのですが、
行き詰っております。
javascriptで実現したいと考えているのですが、
分かる方おられましたらご教授願えませんでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
ボタンを押してキーストロークを送信はそのままではだめですね。ボタンを押した時点で、イベント発生元がTEXTAREAの外になります。
たぶん、event.srcElementはRead Onlyだろうから、
FOCUSを元に戻せば出来た。
<textarea id="t1" name="t1" cols=50 rows=10></textarea>
<script type="text/javascript">
function undo(){
var wsh = new ActiveXObject("WScript.Shell");
document.getElementById("t1").focus();
wsh.SendKeys("^z");
wsh=null;
}
<script>
この回答への補足
再度のご回答、ありがとうございます。
>var wsh = new ActiveXObject("WScript.Shell");
のところでエラーになるようです。
なぜでしょうか。
>document.getElementById("t1").focus();
だけにすると、正常に、<textarea>にフォーカスが移動するのですが。
何か設定の問題でしょうか。
お分かりになりましたら、ご教授くださいませ。
エラーの原因が分かりました!!!
ブラウザ(ie)の設定でした。
[インターネットオプション]→[セキュリティ]タブ→[レベルのカスタマイズ(C)]ボタン
で、
「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」
を、
「無効する」になっていたのを、「有効にする」に変更すると、
うまくいきました。
希望通り、コマンドボタンで<TEXAREA>のアンドゥが実現できました。
感動しました。
ありがとうございました。
No.3
- 回答日時:
たまに、とうこしてみる。
ぜんかくくうはくは、はんかくになおしてちょ!ださくなので、おれいはいらないじょ! ばぶぅ~
<!DOCTYPE html>
<title></title>
<body>
<form id="frm1" action="#">
<div>
<TEXTAREA name="t1" id="t1" cols="50" rows="10">文字を書いてね
</TEXTAREA><br>
<INPUT type="button" value="undo" name="b1" onclick="undo.textPop();" width="54" height="0" alt="アンドゥー">
</div>
</form>
<script type="text/javascript">
//@cc_on
var TextUndo = function ( n ) {
this.n = n;
this.t = [];
this.t.push( n.value );
this.max = 10;
this.b = null;
};
TextUndo.prototype.textPush = function ( ) {
if( this.b == this.n.value ) return;
this.t.push( this.b = this.n.value );
if( this.max < this.t.length ) this.t.shift();
};
TextUndo.prototype.textPop = function ( ) {
if( 0 < this.t.length ) this.n.value = this.t.pop();
};
TextUndo.Listener = function ( e ) {
var obj, n = e./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/;
n.id && ( obj = this.memo[ n.id ] ) && obj.textPush();
};
TextUndo.create = function ( nid ) {
if( 'undefined' === typeof this.memo ) {
this.memo = [ ];
document./*@if( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/
'keydown', function ( e ) { TextUndo.Listener( e ); }, false );
}
var n = document.getElementById( nid );
return ( n && /^TEXT$|^TEXTAREA$/.test( n.nodeName ) ) ?
this.memo[ nid ] = new TextUndo( n ): null;
};
var undo = TextUndo.create( 't1' );
</script>
No.1
- 回答日時:
アンドゥのロジックは難しそうですね。
どこかにネタがあるかなあ。素人的に思いつくのは、
「TEXTAREAにフォーカスがある時、3秒間隔のタイムインターバルで、その内容を
取得して、前と変わっていたら配列にプッシュして、アンドゥボタンが押される度に
配列からポップして、TEXTAREAの内容をおきかえる」とか
単にボタンで「crtl+z」のキーストロークを送出するだけなら、Activexで簡単に
出来るけど、IEだけで、しかも無条件に動作させるには高度に信頼済のサイトに登録した
ページだけです。
ご回答ありがとうございました。
>アンドゥのロジックは難しそうですね。
承知しました。
何か既定の手法があるのかと思っていましたが、
仕方ないですね。
再考してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
追加ボタンを押した際に ok ボ...
-
onclickが動作しない
-
JavaScriptのfileオブジェクト...
-
JSのボタンを複数う使うには
-
プルダウンで選択したページに...
-
javascriptでtextareaに文字列...
-
javaScriptの変数をJavaの変数...
-
ボタンかリンクをクリックする...
-
クリック→テキストボックスに追加
-
クリックさせたいが、click()が...
-
formのfileの値をhiddenでも持...
-
入力フォームにテキストを追加
-
金額に3桁ごとにカンマを入れた...
-
onClickがinput type="image"だ...
-
Googleモバイル検索の検索結果...
-
return trueとreturn falseの用...
-
jQuery セレクトボックスで選択...
-
value内に変数を入れたい
-
iframe内のformをサブミットす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
クリックさせたいが、click()が...
-
onclickが動作しない
-
追加ボタンを押した際に ok ボ...
-
javaScriptの変数をJavaの変数...
-
innerHTML内では改行は禁止?
-
formのfileの値をhiddenでも持...
-
ボタンかリンクをクリックする...
-
JavaScriptのfileオブジェクト...
-
onClickがinput type="image"だ...
-
javascriptで作成されたテーブ...
-
開いた子ウィンドウにあるボタ...
-
コードレビューをお願いします。
-
ボタンをクリックするとテキス...
-
ポップアップブロックにならな...
-
VB.NETで<Input>タグ、<text...
-
ボタンをクリックして文字を置...
-
テキストフィールド未入力の場...
-
URL 判定
-
javascriptでtextareaに文字列...
おすすめ情報