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

时间:2013-04-23 01:56:29

标签: listview jquery-mobile

总而言之。我有一个表单,其中一部分是使用jquery mobile的listview自动完成/数据过滤器使用本地数据的搜索框。

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

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

我需要有一个元素的句柄,因为在某些情况下我想要一个默认值,因为我没有使用listview项作为链接(它是表单的一部分。)

我发现的示例似乎只是展示了如何设置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>

谢谢,尼克

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我最终扩展了mobile.listview小部件以添加get / set功能

基本上我做了什么:

$.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;

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