刘作权博客
火华
根据用户条件搜索功能
2014-07-23 09:11:06   阅读632次

当用户输入查询条件后,根据用户的条件去遍历数据并显示出用户想要看到的内容,

这种很简单,不用去描述了。

但是有这样一种情况,

根据用户输入的条件可能去搜索内容中的任何一段区域,

假如用户不想这样,

用户想要查询输入的条件在数据最前面的内容,

并且优先显示,

当输入的条件在内容的最前面没有匹配到的时候,

再去查询内容中的值。



比如这里有个输入框;

a1cf40c1-4d85-465d-b915-623ec30b37b0.png

用户输入条件后去自动搜索下面这个表格的内容,

如果用户输入“SS”那么,

表格里面数据段所有带“SS”的item都会出现,

就像:

f4c7f9da-4853-4723-ac2a-0526adfa551c.png


假如用户只想让最前面带“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);
		});
	}


最终效果:

258dfaa9-d2ff-41a0-86af-d465e08fc98a.png



-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
1楼:懒得我都懒得说我的懒 发表于 2014-07-23 14:56:40
这个功能有个BUG:首先任意选中一个复选框,然后通过快速搜索搜索一下你刚刚选中的那条记录,你会发现你刚刚选中的复选框取消了。
2楼:太空守望者 发表于 2014-07-24 13:43:12
有bug,及时反馈啊。然后好好改
3楼:太空守望者 发表于 2014-07-24 15:59:49
这个挺全的。
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航