首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jqGrid中调用jQuery函数的自定义格式化程序

在jqGrid中调用jQuery函数的自定义格式化程序
EN

Stack Overflow用户
提问于 2014-10-27 15:05:29
回答 2查看 1.7K关注 0票数 3

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

代码语言:javascript
运行
复制
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函数。我认为问题在于,在创建asisteSi之前,jqGrid是不存在的,所以我不能这样做。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-27 15:12:24

您应该将回调附件放入网格定义的gridComplete选项中,如下所示:

代码语言:javascript
运行
复制
$('#gridAgenda').jqGrid({
    ...
    gridComplete: function () {
        $("#asisteSi").click(function () {
            // do your deed
        });
    }
});

补充性

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

票数 0
EN

Stack Overflow用户

发布于 2014-10-28 11:22:06

最后,我解决了这个问题:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26590560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档