0

我正在尝试创建一个自动完成,其中列表视图是从数据库动态创建的,为此我返回列表视图中的 js 文件中的代码创建过滤,然后将选定的列表文本附加到输入字段并制作列表隐。我将 id 应用于列表视图,该列表视图的 id 与表中数据的 id 相同,以便获取所选列表的 id。我想要的是将选择列表的 id 重新运行到 html 页面,以便我以后可以使用它来将其保存到我正在使用 Jquery 移动自动完成的数据库中。这是自动完成的js代码:

var db = window.openDatabase("Database", "1.0","BPS CRM", 200000);
    function createlist(){


alert("i am in js ");
var usrname=new Array();
var usrid= 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;
                    usrid[i] = dataset.item(i).user_id;
                    console.log("Id from the database: "+usrid[i]);
                }
            }
        });
    });
    if ( value && value.length > 1 ) {

                    for(var j=0;j<usrname.length;j++){
                    html +="<li id='"+usrid[j]+"'>"+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();
        var id=$(this).attr('id');
        alert("Id of selected user: "+id);
        $('#namesearch').val(textval);
        $.mobile.activePage.find("[data-role=listview]").children().addClass('ui-screen-hidden');

    });
});}

这是html脚本代码:

$(function(){
createlist(); }



<ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Find a city..."  data-filter-theme="d" >
            </ul>
4

1 回答 1

0

你的逻辑看起来不错,你的问题是什么?并且您在 js 文件的末尾缺少一个“}”。

于 2013-09-03T07:31:42.410 回答