Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery mobile autocomplete中获取所选列表数据的id_Javascript_Android_Jquery Mobile_Autocomplete_Cordova 2.0.0 - Fatal编程技术网

Javascript 如何在jquery mobile autocomplete中获取所选列表数据的id

Javascript 如何在jquery mobile autocomplete中获取所选列表数据的id,javascript,android,jquery-mobile,autocomplete,cordova-2.0.0,Javascript,Android,Jquery Mobile,Autocomplete,Cordova 2.0.0,我正在创建一个应用程序,其中我使用了jQuery mobile autocomplete。listview数据是从数据库动态创建的。autocomplete listview代码在js文件中返回。我可以从列表视图中选择数据,并将其显示在自动完成的输入字段中,然后禁用搜索列表 知道我想要的是查看我正在从数据库获取数据当用户选择列表数据时,它将显示名称,但当它单击“保存”按钮时,它应该保存该名称的id,而不是jQuery ui中的名称自动完成它很容易,因为在那里我们可以使用带有标签和值的数组 但我不

我正在创建一个应用程序,其中我使用了jQuery mobile autocomplete。listview数据是从数据库动态创建的。autocomplete listview代码在js文件中返回。我可以从列表视图中选择数据,并将其显示在自动完成的输入字段中,然后禁用搜索列表

知道我想要的是查看我正在从数据库获取数据当用户选择列表数据时,它将显示名称,但当它单击“保存”按钮时,它应该保存该名称的id,而不是jQuery ui中的名称自动完成它很容易,因为在那里我们可以使用带有标签和值的数组

但我不知道如何在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');

    });
}); });
如果能给同样的例子,那就太好了


如有任何建议,我们将不胜感激。提前感谢。

我不确定我是否理解了这个问题,但我认为您需要的是在元素中存储用户ID,以及将用户名作为显示文本

像这样的东西可能会帮你:

// 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推。。。而不是使用usrids[i]=。。。;当元素i在给定数组中不存在时