0

jQueryを使用して、入力テキストボックスコントロールのフォーカス/ぼかしイベントを設定しています

$(function() {
  ..
});

しかし、ポストバックが発生するたびに、私のコントロールはこれらのイベントを実行しなくなります。ドキュメントの準備完了イベントからそれらを削除し、ドキュメントの下部にコードを配置しようとしましたが、毎回ロードされることを期待していましたが、うまくいきませんでした。これらのコントロールをポストバック後にフォーカス/ぼかしイベントを保持するにはどうすればよいですか?

それが問題だとは思わなかったが、これらのポストバックはajax:UpdatePanel

4

3 に答える 3

4

イベントを要素に一度アタッチすると、後で削除されます。つまり、イベントも削除されます。イベントを何度もアタッチすることもできますが、イベントを上位レベルの親ノードにアタッチするだけで、心配する必要はありません。

$(function () {
    $(document).on('focusin', 'input.userTxtA_center', function () {
            this.value = '';
            this.className = 'userTxtB_center';

    });
});

バブルが発生しないため、focusin代わりにイベントを使用しています。focusfocus

分離されたデモ:http://jsfiddle.net/TUqsE/

于 2012-05-03T18:33:47.897 に答える
0

を使用してメソッドをバインドします.live()

$('selector').live('EVENT', function() { });

EVENT の場所はblur/ focus/etc です。次に、コントロールが DOM でいつ作成されるかは問題ではありません。jQuery は自動的にハンドラーを再接続します。

http://api.jquery.com/live/

または、ポストバックの完了後にイベントを再接続します

方法については、「 ASP.NET - UpdatePanel と JavaScript - 」を参照してください。

于 2012-05-03T18:05:37.000 に答える
-1

はい、updatepannel が $(document).ready または $(function() {}); の代わりにこの pageload イベントを使用するためです。

例:

<script type="text/javascript" language="javascript">
    function pageLoad() {
       $('#MyId').bind("mouseover", function(e) {
           // Do something exciting
       });
    }
    </script>
于 2012-05-03T18:30:40.263 に答える