2014-10-27 45 views
3

我有一個jqGrid的與返回兩個複選框自定義格式:自定義格式它調用jQuery函數

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不存在,所以我不能這樣做。

有人可以幫助我嗎?

回答

0

你應該把回調連接到電網定義的gridComplete選項,就像這樣:

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

補充

順便說一句,如果有網格多行,您不應該使用asisteSi作爲您的ID,因爲它在頁面中不會是唯一的,並且會導致未定義的行爲。

2

最後,我已經解決了這種方式:

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