私が直面している問題はこれです:
イベントを属性としてテキストボックスに追加できるようにしたいのですが、次のようになります。
txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));
詳細:日付はc#のテキストボックスに入力されます。カレンダーコントロールのページにイベントハンドラがあります。日付が選択されると、イベントハンドラーは日付をテキストボックスに入力します。この時点でフォーカスをテキストボックスに設定してから、テキストボックスにonBlur属性を設定しようとしましたが、テキストボックスにフォーカスが移動したようには見えません。
この時点で、JavaScript関数を直接呼び出してClientScript.RegisterClientScriptBlockなどを実行できると思いますが、それはだらしのないようで、期待どおりに機能しません。
テキスト領域に適用されたときにonchangeイベントが何をするかを誤って解釈しています。フォーカスを失うか、Enterキーを押すまで起動しません。テキスト領域を埋めるselectのonchangeから関数を起動しませんか?
Onchangeイベントの詳細については、こちらをご覧ください: w3schools
これは古い質問であり、役立つかどうかはわかりませんが、プログラムを使用してイベントを発生させることができました。
if (document.createEvent && ctrl.dispatchEvent) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
ctrl.dispatchEvent(evt); // for DOM-compliant browsers
} else if (ctrl.fireEvent) {
ctrl.fireEvent("onchange"); // for IE
}
あなたは単純にイベントを発生させることができます
document.getElementById( "elementID")。onchange();
これが一部のブラウザで機能しないかどうかはわかりませんが、FF 3とIE 7+では機能するはずです。
Onchange
は、ユーザーがキーボードで何かを入力したときにのみ発生します。 可能回避策は、最初にテキストフィールドにフォーカスしてから変更することです。
しかし、ユーザーが日付をクリックしたときにイベントをフェッチしないのはなぜですか?すでにいくつかのJavaScriptが必要です。
人口はサーバー側からです。 registerclientscriptを使用すると、スクリプトがフォームの先頭に配置されます。RegisterStartupScript(Block)を使用して、問題のページの最後にスクリプトを配置する必要があります。
前者は、DOMにテキスト領域が存在する前にスクリプトを実行しようとします。後者は、ページ内のその要素が作成された後にスクリプトを実行します。
Anthemライブラリ を試すことができます。
別のクラスに入れて、関数を呼び出すことができます。これはajaxリフレッシュ時に機能します
$(document).on("change", ".inputQty", function(e) {
//Call a function(input,input);
});