如何访问由data-filter =“true”创建的输入元素

问题描述:

G'day all。我有一个表单,其中的一部分是使用jQuery Mobile的listview自动完成/数据过滤器使用本地数据的搜索框。如何访问由data-filter =“true”创建的输入元素

用户输入几个字符后,可以从自动完成中选择一个建议结果。发生这种情况时,我希望使用所选结果填写搜索框。

问题是,既然jquery-mobile创建输入元素,我不确定如何获取元素的句柄。

我需要有一个手柄的元素,因为我想在某些情况下有一个默认值,因为我没有使用ListView的项目,如链接(这是一个形式的一部分。)

我发现的例子似乎只是显示如何设置列表视图过滤器,但实际上没有做任何事情,一旦结果呈现。

我的列表视图: http://jsfiddle.net/EXHNp/

<div data-role="fieldcontain"> 
<ul class="emp_listview" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Emp Code..." data-role="listview" data-inset="true"> 
    <li><a>fred</a></li> 
    <li><a>mary</a></li> 
    <li><a>bob</a></li> 
    <li><a>alex</a></li> 
</ul> 

谢谢,尼克

有访问输入元素没有直接的方法,而不是你需要遍历DOM。 您可以使用下面的代码来获取输入元素。

$("ul.emp_listview").prev().find('input.ui-input-text'); 
+0

谢谢,我有点用过这个,但只是.find()'元素内的小部件。 – Nick 2013-04-23 05:24:54

我结束了延长mobile.listview小部件添加获取/设置功能

基本上我做了什么:

$.mobile.listview.prototype.searchElement; 

$.mobile.listview.prototype.getInput = function(){ 
    return $(searchElement).find('input').val();  
}; 

$.mobile.listview.prototype.setInput = function(a_input){ 
    return $(searchElement).find('input').val(a_input); 
}; 

而且我已经覆盖了委托listviewcreate函数保存在对象中创建输入包装器。

$.mobile.document.delegate("ul, ol", "listviewcreate", function() { 
... 
searchElement = wrapper; 

很可能是非常错误的方式,但似乎工作。批评欢迎。