构建结构化搜索或过滤查询的Web UI

在现代企业级Web应用程序中,经常需要对数据进行高级搜索或过滤。传统的方法是提供一个包含多个字段、操作符和值的表单。随着用户体验的不断优化,这种功能现在通常以更动态的方式呈现,并且被称为“过滤器”而不是“高级搜索”。这种新的用户体验模式虽然需要更多的点击来构建查询,但它占用的空间更少,不需要用户导航到不同的页面,并且更加强大,因为它允许在同一字段上组合多个条件。

为了实现这种功能,可以使用一个名为Structured-Filter的jQuery UI插件。这个插件允许用户通过一个直观的界面构建结构化查询,例如:“联系人,其中名字以'A'开头,生日在1980年1月1日之后,且状态在(CA, NY, FL)中”。Structured-Filter是一个完整的jQuery UI组件,支持各种配置和主题。

Structured-Filter的配置是通过一个字段列表来完成的,每个字段必须有一个ID、一个类型和一个标签。字段的类型决定了可能的操作符。例如,布尔字段可以使用"Yes"和"No"操作符,日期字段可以使用"on"、"not on"、"after"、"before"等操作符。

要使用Structured-Filter,首先需要加载jQuery、jQuery-UI和插件代码。然后,需要为jQuery UI提供一个主题,以及插件自己的基础CSS文件。接下来,将插件附加到一个现有的DIV标签上。

<script type="text/javascript"> $(document).ready(function() { $("#myFilter").structFilter({ fields: [ {type: "text", id: "lastname", label: "Lastname"}, {type: "text", id: "firstname", label: "Firstname"}, {type: "boolean", id: "active", label: "Is active"}, {type: "number", id: "age", label: "Age"}, {type: "date", id: "bday", label: "Birthday"}, {type: "list", id: "category", label: "Category", list: [ {id: '1', label: "Family"}, {id: '2', label: "Friends"}, {id: '3', label: "Business"}, {id: '4', label: "Acquaintances"}, {id: '5', label: "Other"} ] } ] }); }); </script> <div style="width:100px;" id="myFilter"></div>

Structured-Filter提供了多种选项来自定义其行为,例如按钮标签、日期格式、字段列表、高亮显示、提交按钮等。此外,它还提供了一些方法,如addCondition、clear、length、removeCondition、val、valText和valUrl,用于添加新条件、清除所有搜索过滤器、获取过滤器数量、移除指定索引的条件、获取或设置过滤器定义等。

Structured-Filter还支持事件,如change.search和submit.search,分别在搜索条件列表被修改和提交按钮被点击时触发。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485