Javascript jqGrid中调用jQuery函数的自定义格式化程序
我有一个带有自定义格式化程序的jqGrid,它返回两个复选框:Javascript jqGrid中调用jQuery函数的自定义格式化程序,javascript,jquery,checkbox,jqgrid,Javascript,Jquery,Checkbox,Jqgrid,我有一个带有自定义格式化程序的jqGrid,它返回两个复选框: jQuery(function($){ $("#gridAgenda").jqGrid({ ... colModel: [ ..., "asiste", ... ], colModel:[ ..., {name:'asiste',formatter:asisteFormater}, ...
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(函数($){
$(“#网格议程”).jqGrid({
...
colModel:[
...,
“亚洲”,
...
],
colModel:[
...,
{name:'asiste',格式化程序:asisteformatter},
...
]
...
});
}
函数AsisteFormatter(单元格值、选项、行对象){
返回“SíNo”;
}
$(“#asisteSi”)。单击(函数(){
...
}
但是我想在选中两个复选框中的任何一个时调用jQuery函数,以评估选中了哪一个并调用ajax函数。我认为问题是,在创建jqGrid之前,asisteSi不存在,所以我无法这样做
有人能帮我吗?您应该将回调附件放入网格定义的
gridComplete
选项中,如下所示:
$('#gridAgenda').jqGrid({
...
gridComplete: function () {
$("#asisteSi").click(function () {
// do your deed
});
}
});
补充
顺便说一句,如果网格中有多行,您不应该使用
asisteSi
作为id,因为它在页面中不是唯一的,这会导致未定义的行为。最后,我用这种方式解决了:
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
});
}
}
gridComplete:函数(){
var rowData=$(“#gridAgenda”).getRowData();
对于(var i=0;i
问题是$(asisteSi)在do click时具有最后一个值,因此我必须获取当前Id