jqgrid复选框更改事件

我的数据库中有true / false值。 我想用jqgrid中的复选框更新它们。 一旦该值设置为true,它将保持为true且不应更改。 请看一下我的专栏模型:

{ name : 'available', width : 12, resizable: true, editable: true, align: 'center', edittype:'checkbox', formatter: "checkbox", formatoptions: {disabled : false}, classes:'check', editrules:{required:false}, editoptions:{size:39,value:"True:False"} } 

我正在尝试在选中复选框时捕获事件,目前它们都未经检查,到目前为止我已经尝试过:

 jq(".check input").each(function(){ jq(this).click(function(){ aler("works"); }); }); jq("input[type='checkbox']").change(function(){ alert("works"); }); jq(":checkbox").parent().click(function(evt) { if (evt.target.type !== 'checkbox') { var $checkbox = jq(":checkbox", this); $checkbox.attr('checked', !$checkbox.attr('checked')); $checkbox.change(); alert(""); } }); 

这些都不起作用,我被卡住了,不知道还有什么可以尝试的。

使用firebug检查复选框代码时,它看起来像这样:

  

自定义格式化程序的使用是其中一种可能性。 也可以使用不引人注目的onclick绑定样式

第一个定义

 var grid = $("#list"), getColumnIndexByName = function(columnName) { var cm = grid.jqGrid('getGridParam','colModel'),i=0,l=cm.length; for (; i 

然后一个可以在loadComplete使用代码就好了

 loadComplete: function() { var i=getColumnIndexByName('closed'); // nth-child need 1-based index so we use (i+1) below $("tbody > tr.jqgrow > td:nth-child("+(i+1)+") > input", this).click(function(e) { disableIfChecked(this); }).each(function(e) { disableIfChecked(this); }); } 

请在此处查看相应的演示。

您可以创建自定义格式化程序。 在你的网格中,

 formatter: cboxFormatter, 

然后定义函数,

 function cboxFormatter(cellvalue, options, rowObject) { return ''; } 

您可以使用onclick执行任务或调用函数。

这对我有用:

  // Listen for Click Events on the 'Process' check box column $(document).on("click", "td[aria-describedby='grdOrders_Process']", function (e) { var checked = $(e.target).is(":checked") var rowId = $(e.target).closest("tr").attr("id") rowData = jQuery("#grdOrders").getRowData(rowId); alert("Checked: " + checked) alert("OrderNo: " + rowData.OrderNo); alert("Name: " + rowData.Name); });