11

私が直面している問題はこれです:

  • カレンダーコントロールの横に日付範囲のテキストボックスがあります。
  • ユーザーがカレンダーから日付を選択すると、その日付がテキストボックスに入力されます
  • これが発生した場合、JavaScript関数を起動したいのですが、「onchange」イベントが発生していないようです。

理想的には、次のようなイベントを属性としてテキストボックスに追加できるようにしたいと思います。

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));

詳細:日付はC#のテキストボックスに入力されます。カレンダーコントロールのページにはイベントハンドラーがあります。日付が選択されると、イベントハンドラーは日付をテキストボックスに入力します。この時点でフォーカスをテキストボックスに設定してから、テキストボックスにonBlur属性を設定しようとしましたが、テキストボックスにフォーカスが設定されていないようです。

この時点で、ClientScript.RegisterClientScriptBlockなどを実行してjavascript関数を直接呼び出すことができると思いますが、それはずさんなようで、思ったようには機能しません。

4

8 に答える 8

19

これは古い質問であり、役立つかどうかはわかりませんが、次を使用してプログラムでイベントを発生させることができました。

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
}
于 2010-09-02T17:06:21.523 に答える
8

で簡単にイベントを発生させることができます

document.getElementById("要素ID").onchange();

これが一部のブラウザーで機能しないかどうかはわかりませんが、FF 3 と IE 7 以降では機能するはずです

于 2009-04-09T19:21:58.757 に答える
8

テキストエリアに適用されたときに onchange イベントが何をするかを誤解しています。フォーカスを失うか、Enter キーを押すまで発火しません。テキスト領域を埋める選択の onchange から関数を起動しないのはなぜですか?

onchange イベントの詳細については、こちらをご覧ください: w3schools

于 2009-04-09T19:03:13.997 に答える
2

Onchangeユーザーがキーボードで何かを入力したときにのみ発生します。可能な回避策は、最初にテキストフィールドにフォーカスしてから変更することです。

しかし、ユーザーが日付をクリックしたときにイベントをフェッチしないのはなぜでしょうか? すでにいくつかのJavaScriptが存在する必要があります。

于 2009-04-09T19:00:59.943 に答える
1

あなたの人口はサーバー側からです。registerclientscriptを使用すると、スクリプトがフォームの先頭に配置されます。RegisterStartupScript(Block)を使用して、問題のページの最後にスクリプトを配置する必要があります。

前者はテキスト領域がdomに存在する前にスクリプトを実行しようとし、後者はページ内のその要素が作成された後にスクリプトを実行します。

于 2009-04-09T21:56:18.387 に答える
1

Anthemライブラリを試すことができます。

于 2010-09-02T16:31:26.107 に答える
0

別のクラスに入れてから関数を呼び出すことができます。これは、ajax の更新時に機能します

$(document).on("change", ".inputQty", function(e) {

//Call a function(input,input);
});
于 2014-08-22T13:42:38.957 に答える
-4

「onchange」は、属性がプログラムによって変更された場合、またはユーザーが変更を行ってからフィールドから離れた場合にのみ発生します。

YUI のカレンダー オブジェクトの使用について調べましたか? yui カレンダーを yui パネル内に配置し、関連する画像がクリックされるまでパネルを非表示にするソリューションをコーディングしました。どちらからでも変化が見られます。

http://developer.yahoo.com/yui/examples/calendar/formtxt.html

于 2009-04-09T19:04:29.670 に答える