当用户输入查询条件后,根据用户的条件去遍历数据并显示出用户想要看到的内容,
这种很简单,不用去描述了。
但是有这样一种情况,
根据用户输入的条件可能去搜索内容中的任何一段区域,
假如用户不想这样,
用户想要查询输入的条件在数据最前面的内容,
并且优先显示,
当输入的条件在内容的最前面没有匹配到的时候,
再去查询内容中的值。
比如这里有个输入框;
用户输入条件后去自动搜索下面这个表格的内容,
如果用户输入“SS”那么,
表格里面数据段所有带“SS”的item都会出现,
就像:
假如用户只想让最前面带“SS”的item出现,
如果没有的话,再去查询后面的,
此时应该这样;
$("#grid").jqGrid("clearGridData"); // 首先清空表格原有的数据 var key = $("#searchInput").val().toUpperCase(); //然后去获取用户输入的条件,如果是英文做一下大写转化 var matData = [], matData2 = []; $.each(allData, function(k, v){ var str1 = v.DOName.substring(0, key.length); var str2 = v.DOName.substring(key,length,v.DOName.length-1); if(str1.toUpperCase().indexOf(key) != -1){ //先去搜索字段前面的值 matData.push(v); //如果有找到匹配的内容保存到数组里面 } if (v.DOName.toUpperCase().indexOf(key) != -1) { //如果没有找到匹配的再去查询所有的内容 matData2.push(v); //如果有找到匹配的内容保存到数组里面(注意这里的数组和上面的数组不是同一个) } }); // 然后去显示数组的值 if(matData.length >= 1){ $.each(matData, function(k,v){ $("#version-upgrade-grid").jqGrid("addRowData", k + 1, v); }); } if(matData.length <= 1 && matData2.length >= 1){ $.each(matData2, function(k,v){ $("#version-upgrade-grid").jqGrid("addRowData", k + 1, v); }); }
最终效果:
-----------------------------------------------------
转载请注明来源此处
原地址:#
发表