【问题标题】:Custom formatter in jqGrid which calls jQuery functionjqGrid中调用jQuery函数的自定义格式化程序
【发布时间】:2014-12-22 19:24:24
【问题描述】:

我有一个带有自定义格式化程序的 jqGrid,它返回两个复选框:

jQuery(function($){
    $("#gridAgenda").jqGrid({
    ...
    colModel: [
        ...,
        "asiste",
        ...
    ],
    colModel:[
        ...,  
        {name:'asiste',formatter:asisteFormater},
        ...
    ]
    ...
});
}
function asisteFormater (cellvalue, options, rowObject) {
    return "Sí<input type='checkbox' id='asisteSi'/> No<input type='checkbox' id='asisteNo'/>";
}

$("#asisteSi").click(function () {
    ...
}

但是我想在选中两个复选框中的任何一个时调用一个 jQuery 函数,以评估哪个复选框被选中并调用一个 ajax 函数。我认为问题是,在创建 jqGrid 之前 asisteSi 不存在,所以我不能这样做。

有人可以帮我吗?

【问题讨论】:

    标签: javascript jquery checkbox jqgrid


    【解决方案1】:

    我终于这样解决了:

    gridComplete: function () {
            var rowData = $("#gridAgenda").getRowData();             
            for (var i = 0; i < rowData.length; i++) 
            {               
                var asisteSi="#asisteSi"+rowData[i].id;
                var asisteNo="#asisteNo"+rowData[i].id;             
                $(asisteSi).click(function(){           
                    var actualSi = "#"+this.id;
                    var actualNo = actualSi.replace("asisteSi","asisteNo");                 
                    if($(actualSi).prop('checked')){
                        $(actualNo).prop('checked', false);                 
                    }
                    //TODO:llamada ajax
                });             
                $(asisteNo).click(function(){           
                    var actualNo = "#"+this.id;
                    var actualSi = actualNo.replace("asisteNo","asisteSi");
                    if($(actualNo).prop('checked')){
                        $(actualSi).prop('checked', false);                     
                    }
                    //TODO:llamada ajax                 
                });
             }
    }
    

    问题是 $(asisteSi) 在单击时具有最后一个值,所以我必须获取当前 Id

    【讨论】:

      【解决方案2】:

      您应该将回调附件放入网格定义的gridComplete 选项中,就像这样:

      $('#gridAgenda').jqGrid({
          ...
          gridComplete: function () {
              $("#asisteSi").click(function () {
                  // do your deed
              });
          }
      });
      

      补充

      顺便说一句,如果网格中有多行,则不应使用 asisteSi 作为 id,因为它在页面中不是唯一的,这会导致未定义的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        相关资源
        最近更新 更多