我正在尝试仅针对整数数据验证搜索字段,但遗憾的是我无法这样做。我已经尝试了所有可能的解决方案,如searchrules:{required:true,integer = true}等。 但是没有一个证明是富有成效的。 我基本上使用字段启动搜索对话框,而不输入任何数据,我点击“查找”按钮。根据上述选项,我相信应该向用户显示验证消息,要求他在点击查找之前在字段中输入值。
[更新] - 代码段
var grid = $("#list");
grid.jqGrid({
url:'/index.jsp',
datatype: 'json',
mtype: 'POST',
colNames:['Name','Age', 'Address'],
colModel :[
{name:'name', index:'name', width:55,search:true },
{name:'age', index:'age',
width:90,editable:true,search:true, stype:'text',
searchrules:{required:true,integer:true}},
{name:'address', index:'address', width:80,
align:'right', editable: true,search:false }
],
pager: '#pager',
jsonReader : {
root:"address",
page: "page",
total: "total",
records: "records",
repeatitems: false
},
rowNum:10,
rowList:[10,20,30],
sortname: 'name',
sortorder: 'desc',
viewrecords: true,
gridview: true,
autowidth: true,
toppager: true,
loadtext: "Loading records.....",
caption: 'Test Grid',
gridComplete: function(){
}
});
**grid**.jqGrid('navGrid','#pager',
{view:true,edit:true,add:true,del:true,refresh:true,
refreshtext:'Refresh',addtext:'Add',
edittext:'Edit',cloneToTop:true,
edittitle: "Edit selected row"},
{},{},{},
{caption: "Search The Grid",Find: "Find Value",Reset: "Reset"},
{});
[更新]:无法使搜索规则适用于单/高级搜索模式。
[更新]:即使是“搜索中的验证” jqGrid Demo不适用于搜索规则。
答案 0 :(得分:0)
描述问题的原因是jqGrid中的错误。 The line
ret = $.jgrid.checkValues(val, -1, null, colModelItem.searchrules, colModelItem.label);
将$.jgrid.checkValues
的第三个参数初始化为null
,但checkValues
实施的最后一个版本已开始(请参阅the line)
var cm = g.p.colModel;
但g
已初始化为null
。产生错误的The last modification基于my suggestion,但我没有编写代码的一部分。
可以用不同的方式解决问题。我建议修改$.jgrid.checkValues
将使用null
参数调用的行到以下
ret = $.jgrid.checkValues(val, -1, {p: {colModel: p.columns}}, colModelItem.searchrules, colModelItem.label);
此外,我建议您修改one more line
if(!nm) { nm = g.p.colNames[valref]; }
到
if(!nm) { nm = g.p.colNames != null ? g.p.colNames[valref] : cm.label; }
jquery.jqGrid.src.js
的固定版本可以获得here。我将在以后发布我的错误报告并提供相同的建议。