我有一个带有自定义格式化程序的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函数。我认为问题在于,在创建asisteSi之前,jqGrid是不存在的,所以我不能这样做。
有人能帮我吗?
发布于 2014-10-27 15:12:24
您应该将回调附件放入网格定义的gridComplete选项中,如下所示:
$('#gridAgenda').jqGrid({
...
gridComplete: function () {
$("#asisteSi").click(function () {
// do your deed
});
}
});补充性
顺便说一句,如果网格中有多个行,您不应该使用asisteSi作为您的id,因为它在页面中不会是唯一的,这会导致未定义的行为。
发布于 2014-10-28 11:22:06
最后,我解决了这个问题:
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
https://stackoverflow.com/questions/26590560
复制相似问题