2016-07-04 12 views
2

短いストーリー私は、私が使用しているカスタムフレームワークが私が望むようにページを操作するためのスクリプトを挿入することを可能にするいくつかのコードをカウボーイしています。Jqueryはテキストボックスのプログラムによる変更を検出します

私は機能を呼び出すが、使用したいテキストボックスが呼び出されたWebサービスから取り込まれた後にのみ、機能を起動したい。

jquery/Javascriptでは、jquery change関数のような関数を呼び出すことができますが、ブラウザのユーザーではなくJavaScriptからテキストボックスが変更されたことを検出できるものがあります。

私は現在、ちょうど持っている:

$("#mytexbox").on('input propertychange paste change',function() { 
    doSomething(); 
}); 

をしかし、ロックされたコードで、元の関数は、テキストボックスの値を設定する場合、これは発生しません。

注:私はJavascriptで模倣することができない動的サーバーサイドコードから構築されているので、元の関数をオーバーロードすることはできません。

また、setTimeout()を使用することを避けたいのは、信頼性が低く、素晴らしいソリューションではないためです。

ありがとうございます!

+0

私はインターバルタイマー以外に使用できるAPIはないと思います。 MutationObserver Apiは値の変更をサポートしていません – charlietfl

+0

グローバル '$ .ajaxComplete'ハンドラを登録し、そこから変更を確認してください。 –

+0

keydown、keyup、またはkeypressを確認し、要素コンテンツが変更される前にイベントが発生したかどうかを確認できます。 – GGG

答えて

0

#mytextboxの変更ではなく、隠しdivや入力を使用して変更を確認することができます。明らかに、ユーザーは隠されたdivを変更することはできませんが、スクリプトはできます。あなたはトリックを得る? ;)

+0

私はあなたがその質問を読むとは思わない。私は基本的に元のページをカウボーイするためのスクリプトファイルにしかアクセスできません。 jsでdivを作成することはできますが、テキストボックスにデータが入力されるタイミングはまだ分かりません。 元の関数にアクセスして隠れたdivを取り込めるようにすることはできません。そうしないと、テキストボックスにデータが入力されなくてもそこから関数が呼び出されます。 – Cyassin

+1

申し訳ありませんが、私はあなたの質問が間違って理解しました。 – ernestortiz

関連する問題