没有可以直接做你需要的选项。此外,如果您使用$('select.opsel').hide() 在对话框初始化时(例如在beforeShowSearch 事件处理程序内部)隐藏搜索对话框中的ADD/OR 操作数,则选择元素将被隐藏仅在开头 .用户单击任何按钮后,对话框包含的内容将被重新绘制,而无需调用任何事件处理程序,并且选择元素将再次可见。
所以我建议通过覆盖过滤器对话框的方法reDraw来解决问题。执行此操作的代码如下所示
jQuery("#grilla").jqGrid("navGrid","#paginador",
{del: false, add: false, edit: false}, {}, {}, {},
{
multipleSearch: true,
beforeShowSearch: function($form) {
var searchDialog = $form[0],
oldrReDraw = searchDialog.reDraw, // save the original reDraw method
doWhatWeNeed = function () {
// hide the AND/OR operation selection
$('select.opsel', searchDialog).hide();
setTimeout(function () {
// set fucus in the last input field
$('input[type="text"]:last', searchDialog).focus();
}, 50);
}
searchDialog.reDraw = function () {
oldrReDraw.call(searchDialog); // call the original reDraw method
doWhatWeNeed();
}
doWhatWeNeed();
}
}
);
您可以在 the demo 上看到这种方法确实有效。
更新:写完答案后,我向 trirand 提出了一些改进 jqGrid 的建议。现在 jqGrid 有许多功能可以简化上述工作。比如存在afterRedraw回调,可以直接使用。所以答案中的代码看起来像
grid.jqGrid("navGrid", "#pager",
{add: false, edit: false, del: false}, {}, {}, {},
{
multipleSearch: true,
afterRedraw: function (p) {
var $form = $(this);
$form.find("select.opsel").hide();
setTimeout(function () {
// set fucus in the last input field
$form.find('input[type="text"]:last').focus();
}, 50);
$form.find("input.add-rule,input.delete-rule").button();
}
}
);
查看修改后的演示here:
我在afterRedraw的代码中多加了一行
$form.find("input.add-rule,input.delete-rule").button();
仅用于改善搜索对话框中按钮的外观。我建议在 jqGrid 中将此类设置设为默认值,但这并未被 trirand 接受。无论如何,每个包含 jQuery UI 的人都可以在afterRedraw 中添加这样的行来使按钮变平。