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当用户导航到同一域上的不同页面时,该对象会保留其内容。
  • 浏览器在导航到页面时会发送一个 HTTPreferer标头,其中包含上一页的 URL。不过,有些浏览器不这样做。
  • 如果您想要实现的只是确定您是否在表单提交页面上,那么有很多方法可以做到这一点。
    • 检查 DOM 节点是否存在:if($("#my-form-error").length){...
    • 让服务器在全局范围内注入一个 javascript 变量:<script> shouldTriggerX = true`. 不过要小心污染全局范围。
    • 让服务器触发事件​​:<script> $(document).ready(onFormSubmitDone) </script>. 这具有污染全局范围的相同问题。
    • 让服务器为始终存在的某个元素(例如body)设置一个 ID 或类: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 回答