我正在使用jqgrid,并且我有一个带有下拉列表的过滤器行,以允许人们从项目列表中进行选择。我认为加载所有下拉列表会浪费很多周期,因为人们可能不会选择其中任何一个。
无论如何都要推迟 ajax 调用以获取下拉列表,直到一个人实际单击下拉过滤器中的箭头。我看到其他一些网格库可以做到这一点。
看一下这个:
标记:
<select id="ddl">
<option value="-1">Select One</option>
</select>
jQuery :
$("body").delegate("#ddl", "focus",function(event){
//ajax call here, and then append items
$(this).append("<option value='1'>Option 1</option>");
$(this).append("<option value='2'>Option 2</option>");
$(this).append("<option value='3'>Option 3</option>");
$(this).append("<option value='4'>Option 4</option>");
$(this).append("<option value='5'>Option 5</option>");
});
jsfiddle:http: //jsfiddle.net/9asfG/
我认为您也可以在服务器端执行此操作,在代码中您可以添加一个 if 语句来检查 $_POST["_search"] 内部,如果这是真的,则在 $_POST 内部循环,查找下拉搜索条件已发布,如果否,则回显空白或任何内容以停止代码,如果是,则继续从数据库加载数据。
PS.:我个人的看法,“延迟”结果可能不是一个好主意,因为用户可能不知道他需要先选择下拉菜单,从用户体验的角度来看,这不是一个好的设计。