我有一个带有多选复选框的 jqGrid 表(将表转换为网格)。
为了自定义复选框样式,我使用了 prettyCheckable ,它为复选框输入生成一个标签和一个 anchor (href) 和 div 容器(被标签和 a 隐藏和覆盖)。我的问题是,当我检查标签时不起作用,而不是当我检查输入时。
<div class="clearfix prettycheckbox labelright blue " id="aui_11140">
<input role="checkbox" id="rs" class="cbx" type="checkbox" style="display: none;">
<label for="rs" class="checked" id="aui_11139">
</label>
</div>
为输入设置 prettyCheckable :
$("input[type=checkbox]").change(function() {
$(this).triggerHandler("click");
}).prettyCheckable();
这是我的 jqGrid 设置:
$(document).ready(function() {
$('#searchForm').ajaxForm(function() {
var _data = $('#searchForm').serialize();
$('#ResultsTable').jqGrid().setGridParam({url: '${searchUrl}' + _data}).trigger("reloadGrid")
return true;
});
jsonTable('ResultsTable', 'ResultsPager', '${searchUrl}', 'searchForm',
{id: 'code'},
['Code', 'Description', 'CF'],
[{name: 'code', index: 'code', width: 55},
{name: 'description', index: 'description', width: 90},
{name: 'CF', index: 'CF', width: 80},
function(id) {
var selRows = $(this).jqGrid('getGridParam', 'selarrrow');
$('#edit').toggle(selRows.length == 1);
$('#delete').toggle(selRows.length > 0);
$('#editForm #code').val(selRows);
$('#deleteForm #code').val(selRows);
},
function(aSel, selected) {
$('#edit').toggle(false);
$('#delete').toggle(selected);
if (selected) {
$('#editForm #code').val(selRows);
$('#deleteForm #code').val(selRows);
}
},
true
)
});
为什么这不起作用?
附言。我编辑了 prettyCheckable.js 并删除了 <a>
因此不会生成。我从 .prettycheckbox a {}
重命名了 css至 .prettycheckbox label {}
.
最佳答案
插件prettyCheckable
使用如下代码
input.prop('checked', true).change();
将状态的变化转发给复选框。另一方面,jqGrid 仅包含 click
事件句柄(参见 the line)。
你可以做的是在 change
事件的情况下触发 click
事件。
例如,假设您有 id="list"
的网格。然后,用于选择所有元素的复选框的 id
将为 cb_list
(“cb_”附加网格 ID)。所以你可能使用这样的代码
$("#cb_list").prettyCheckable();
我建议你把代码改成下面这样
$("#cb_list").change(function() {
$(this).triggerHandler("click");
}).prettyCheckable();
它应该可以解决您的问题。
关于jquery - jqGrid 上的 prettyCheckable 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144547/