2013-07-31 31 views
3

我找遍净了很多,但无法找到任何解决方案。我正在制作一个Web应用程序,我想要2个文本框从用户那里获取数据输入。我想在这个文本框中自动完成功能。自动完成的标记列表在本地可用。我尝试了listview,但我想要的是,用户从自动完成提示中选择一些选项后,文本框应该有选定的值,并通过一些对象,我应该得到的JavaScript/PHP使用的文本框的值。这是一件非常基本的事情,但我无法做到。请帮我出自动完成的jQuery Mobile的文本输入

我想这jsfiddle.net/ULXbb/48/。但问题在于,在我选择了1个listview中的东西后,两个listview都获得了相同的值。

+0

这两个文本都在同一页?或单独的页面? – Omar

+0

什么是输入文本?地址或其他东西? – Jeffrey

+0

替换此'$( '输入[数据类型= “搜索”]')VAL($(本)的.text());'与此'$ .mobile.activePage.find('输入[数据类型= “搜索”]')VAL($(本)的.text());'。这会将值添加到仅在活动页面中搜索输入。这里 – Omar

回答

7

为了不将相同的值添加到两个搜索输入中,您需要使用.closest(),.next(),.prev().find()作为目标。 jQuery-Mobile以不同的方式增强了数据过滤器的列表视图。

Demo

<form> 
    <input> 
</form> 
<ul data-role="listview"> 
    <li> 
    <a>text</a> 
    </li> 
</ul> 

form其中input位于,是对ul的相同的水平。要定位input框,您需要使用.prev('form').find('input')。查看下面的演示和新代码。

$("input[data-type='search']").keyup(function() { 
    if ($(this).val() === '') { 
     $(this).closest('form').next("[data-role=listview]").children().addClass('ui-screen-hidden'); 
    } 
}); 

$('a.ui-input-clear').click(function() { 
    $(this).closest('input').val(''); 
    $(this).closest('input').trigger('keyup'); 
}); 

$("li").click(function() { 
    var text = $(this).find('.ui-link-inherit').text(); 
    $(this).closest('[data-role=listview]').prev('form').find('input').val(text); 
    $(this).closest('[data-role=listview]').children().addClass('ui-screen-hidden'); 
}); 
+0

这正是我想要的。非常感谢。但是,我仍然有一个疑问。我想在其他一些JavaScript脚本中访问这两个过滤器的文本值。我怎样才能做到这一点?我应该在document.getElementById中传递什么? – user1518793

+0

@ user1518793它取决于你想读取的值。检查更新的演示。 – Omar

+0

http://jsfiddle.net/ULXbb/244/ 检查this..on点击“提交”按钮,我想运行一个JavaScript函数,并希望访问该功能的2个过滤器值.. – user1518793

0

感谢@ user714852我已经延长你的答案只是在脚本标签中加入这一行:

$("#mylist li").addClass('ui-screen-hidden');

它会创造奇迹。

一个工作示例:Listview Autocomplete - Enhanced