自定义列表视图 - 过滤用户输入

时间:2013-06-09 18:43:55

标签: javascript jquery html listview jquery-mobile

好的,这是我的问题:

  • 我试图用很多项目来实现一个基于jQueryMobile的列表视图(当我说"很多"我的意思是成千上万)时
  • 元素不必从头开始显示在列表中,而是根据用户键入的内容显示
  • E.g。等待用户输入至少2个字符,然后显示(附加到列表中)相应的项目
  • 依旧......

你会怎么做?这个问题有没有现成的解决方法? (我到处搜索但找不到任何有效的东西......)

2 个答案:

答案 0 :(得分:1)

如果您对列表视图使用过滤器,则应检查源代码。

else {
//filtervalue is empty => show all
listItems.toggleClass( "ui-screen-hidden", !!listview.options.filterReveal );
}

此处显示搜索区域为空白时的所有元素。你可以改变它来隐藏所有,而不是全部显示。这样您就可以将列表视图填满,默认行为将显示您想要的结果。虽然这从第一种类型开始起作用。您也可以更改它,并在每次调用时检查搜索文本的长度(onKeyUp事件),如果它的lengthOfText> = 2。

编辑加载列表时,您必须自己隐藏它们。只需添加

"ui-screen-hidden"

你的李元素。

//无论你最后做了什么,请提供一个链接,以便我看到性能。我很好奇。

答案 1 :(得分:1)

您可以使用

data-filter-reveal="true"

以下是DEMO http://jsfiddle.net/yeyene/SjbMd/2/

HTML

<ul data-role="listview" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Search fruits..." data-inset="true">
    <li><a href="#">Apple</a></li>
    <li><a href="#">Banana</a></li>
    <li><a href="#">Cherry</a></li>
    <li><a href="#">Cranberry</a></li>
    <li><a href="#">Grape</a></li>
    <li><a href="#">Orange</a></li>
</ul>