JavaScript触发器不起作用

时间:2015-12-22 08:50:28

标签: javascript jquery

我尝试触发按钮,因此当用户加载页面时,会自动点击该按钮。

我的代码如下:

$(document).ready(function() {  
  console.log("it's here");

  $("#btnPeriod").trigger('click');
});

$("#btnPeriod").on('click', function(){
  var ahhhhh = "<security:authentication property="securityUser.fullName"/>";
  ahhhhh = ahhhhh.replace(/&#32;/g, " ");
  console.log(ahhhhh);

  $.extend($("#noticeList").jqGrid("getGridParam", "postData"),{
    filters : JSON.stringify({
      groupOp : "OR",
      rules : [{
        field : "notiWriter",
        op : "eq",
        data : ahhhhh
      }],
      groups : []
    })
  });
  $("#noticeList").jqGrid("setGridParam", {search : true}).trigger('reloadGrid', [{current : true, page : 1}]);
});

当页面加载时,我可以看到“它在这里”的日志和ahhhhh的值。但是,即使我可以看到日志,假设发生的操作也没有得到应用。有趣的是,当我点击按钮,然后它工作,另一个变量ahhhhh的日志消息。

仅供参考,我正在使用jqGrid,当我点击btnPeriod按钮时,它会过滤其notiWriter的cellvalue与变量ahhhhh不匹配的行。

现在,当我加载此页面时,它显示如下: enter image description here

然后,当我点击一个按钮时,它只显示如下的某些行: enter image description here

我希望当用户加载页面时,它总是看起来像第二张图片。

我曾经使用过setTimeout,但事实证明它效果不好,所以我希望你能给我一些帮助。

提前谢谢。

3 个答案:

答案 0 :(得分:3)

您需要将click处理程序绑定到document.ready处理程序内的按钮,然后再调用trigger()。试试这个:

$(document).ready(function() {    
    $("#btnPeriod").on('click', function(){
        var ahhhhh = "<security:authentication property="securityUser.fullName"/>";
        ahhhhh = ahhhhh.replace(/&#32;/g, " ");
        console.log(ahhhhh);

        $.extend($("#noticeList").jqGrid("getGridParam", "postData"),{
            filters : JSON.stringify({
                groupOp : "OR",
                rules : [{
                    field : "notiWriter",
                    op : "eq",
                    data : ahhhhh
                }],
                groups : []
            })
        });

        $("#noticeList").jqGrid("setGridParam", {
            search: true
        }).trigger('reloadGrid', [{ 
            current: true, 
            page: 1
        }]);
    });

    $("#btnPeriod").trigger('click');
});

答案 1 :(得分:0)

尝试在jquery ready函数中包含事件绑定,并在触发点击之前绑定事件:

$(document).ready(function() {  
   console.log("it's here");


   $("#btnPeriod").on('click', function(){
        var ahhhhh = "<security:authentication property="securityUser.fullName"/>";
        ahhhhh = ahhhhh.replace(/&#32;/g, " ");
        console.log(ahhhhh);

        $.extend($("#noticeList").jqGrid("getGridParam", "postData"),{
            filters : JSON.stringify({
                groupOp : "OR",
                rules : [{
                   field : "notiWriter",
                   op : "eq",
                   data : ahhhhh
                 }],
                 groups : []
                })
             });
           $("#noticeList").jqGrid("setGridParam", {search : true}).trigger('reloadGrid', [{current : true, page : 1}]);
      });

    $("#btnPeriod").trigger('click');

 });

答案 2 :(得分:0)

为什么不在准备好的函数中包含click事件绑定?

$(document).ready(function() {  
console.log("it's here");

$("#btnPeriod").on('click', function() {
    var ahhhhh = "<security:authentication property="securityUser.fullName"/>";
    ahhhhh = ahhhhh.replace(/&#32;/g, " ");
    console.log(ahhhhh);

    $.extend($("#noticeList").jqGrid("getGridParam", "postData"), {
        filters : JSON.stringify({
            groupOp : "OR",
            rules : [{
                field : "notiWriter",
                op : "eq",
                data : ahhhhh
            }],
            groups : []
        })
    });
    $("#noticeList").jqGrid("setGridParam", {search : true}).trigger('reloadGrid', [{current : true, page : 1}]);
});

$("#btnPeriod").trigger('click');

});