0

私はjspでいくつかのコードを書きました

$(document).ready(function() {

$("#invDiffAccount").trigger("change");
$("#adatAccount").trigger("change");
$("#originalInvNo").trigger("keyup");



$("#originalInvNo").keyup(function() {
        //////calling json //////
    });

$('#confirmationParty').change(function(){
    ///setting some label values///
    });

$('#invDiffAccount').change(function(){
    ///setting some label values///
    });

$('#adatAccount').change(function(){
          ///setting some label values///
    });



});

私の問題は、検証メッセージが表示され、ページが同じページにリダイレクトされる場合です

私が書いたので、これらすべての機能を実行する必要がありますdocument.ready

なぜそれが起こらないのか誰か教えてもらえますか..???

4

2 に答える 2

1

ハンドラーをアタッチする前にイベントをトリガーすると、ハンドラーは呼び出されません。これがあなたがやろうとしていることである場合は、最初にアタッチしてからトリガーします。

$("#originalInvNo").keyup(function() {
    //////calling json //////
});

$("#originalInvNo").trigger("keyup");

ページがリロードされたときにハンドラーをトリガーする場合は、別の方法でトリガーする必要があります。イベントハンドラーは、ページのリロード後も存続しません。

  • ユーザーが同じドメインの別のページに移動しても、SessionStorageオブジェクトはその内容を保持します。
  • ブラウザrefererは、ページに移動するときに、前のページのURLを含むHTTPヘッダーを送信します。ただし、一部のブラウザはそれを行いません。
  • フォーム送信ページを表示しているかどうかを確認するだけで達成しようとしているのであれば、それを行う方法はたくさんあります。
    • DOMノードの存在を確認します。if($("#my-form-error").length){...
    • サーバーにjavascript変数をグローバルスコープに挿入させます:<script> shouldTriggerX = true`。ただし、グローバルスコープの汚染には注意してください。
    • サーバーにイベントをトリガーさせます:<script> $(document).ready(onFormSubmitDone) </script>。これには、グローバルスコープを汚染するという同じ問題があります。
    • サーバーにIDまたはクラスを常に存在する要素に設定させます(たとえばbody):if($(body).is(".form-error-page"){...
于 2012-11-21T15:57:35.320 に答える
1

この小さなリファクタリングを試してみてください。

$(function() {

$("#originalInvNo").on('keyup',function() {
        //////calling json //////
    });

$('#confirmationParty').on('change',function(){
    ///setting some label values///
    });

$('#invDiffAccount').on('change',function(){
    ///setting some label values///
    });

$('#adatAccount').on('change',function(){
          ///setting some label values///
    });

$("#invDiffAccount").trigger("change");
$("#adatAccount").trigger("change");
$("#originalInvNo").trigger("keyup");

});
于 2012-11-21T16:00:26.883 に答える