我正在创建一个应用程序,其中我使用了jquery移动自动完成,listview数据是从数据库动态创建的,自动完成列表视图代码在js文件中返回。我可以从列表视图中选择数据并将其显示在自动完成的输入字段中,然后禁用搜索列表。知道我想要的是seens我从数据库中获取数据当用户选择列表数据时它将显示名称但是当它点击thesave按钮时它应该保存该名称的id而不是jquery中的名称ui autocomplete it easy bcz那里我们可以使用带有标签和值的数组。但我不知道如何在jquery mobile中做到这一点。 这里创建自动完成的代码:
var db = window.openDatabase("Database", "1.0","BPS CRM", 200000);
$( document ).on( "pageinit", "#myPage", function() {
var usrname=new Array();
$( "#autocomplete" ).on( "listviewbeforefilter", function ( e, data ) {
var $ul = $( this ),
$input = $( data.input ),
value = $input.val(),
html = "";
$ul.html( "" );
db.transaction(function(tx){
tx.executeSql('select * from users',[],function(tx,results){
var dataset=results.rows;
if(dataset.length>0){
for(var i=0;i<dataset.length;i++){
usrname[i] =dataset.item(i).user_name;
}
}
});
});
if ( value && value.length > 1 ) {
for(var j=0;j<usrname.length;j++){
html +="<li>"+usrname[j]+"</li>";
}
$ul.html( html );
$ul.listview( "refresh" );
$ul.trigger( "updatelayout");
$.mobile.activePage.find('input[placeholder="Find a city..."]').attr('id','namesearch');
}
$("ul>li").click(function(){
var textval=$(this).text();
$('#namesearch').val(textval);
$.mobile.activePage.find("[data-role=listview]").children().addClass('ui-screen-hidden');
});
}); });
如果给出相同的小例子,那将是很好的 任何建议都是提前感谢Thnaks。
答案 0 :(得分:0)
我不确定我是否理解这个问题,但我认为您要查找的是将用户ID存储在<li>
元素中,并将用户名作为显示的文本。
这样的事情可能适合你:
// declare a collection of Ids where you declare usrname
var usrids = new Array();
// in your execute sql callback, add this line:
usrids.push(dataset.item(i).user_id); // see note below
// in your for loop where you insert li's, modify the line like this :
html +="<li data-userid='" + usrids[j] + "'>"+usrname[j]+"</li>";
// then in your ul>li click event, you can reference your ids like this :
var userId = $(this).data('userid');
另外,作为一般说明,我认为最好使用usrids.push(...)和usrname.push(...)而不是使用usrids [i] = ...;当元素i在给定数组中不存在时。