如何设置&在JQuery Autocomplete中获取ID

时间:2013-09-10 04:16:59

标签: javascript jquery jquery-ui autocomplete cordova

感谢您阅读我的问题。我正在使用PhoneGap处理移动应用程序。 我正在使用HTML 5数据库来存储数据。

我的其中一个表格是Company,其中com_id & com_name。 我使用this创建了简单的搜索文本框。这对于静态&动态阵列。

这是我的一些代码,它从数据库中获取记录并在自动完成中设置。

function All_Company_QuerySuccess(tx, results) {
    console.log("Returned rows = " + results.rows.length);
    var com_array = []; // init array
    //this will return user_id if user exist else return "no user"
    if (!results.rowsAffected) {
        for (var index = 0; index < results.rows.length; index++) {
            var item = results.rows.item(index);
            var com_id = item.com_id; // company id
            var com_name = item.com_name; // company name 
            com_array.push(com_name) // add value into array
        }
        // assign drop down
        $(function () {

            $("#pur_com_text").autocomplete({
                source: com_array,
                select: function (event, ui) {
                    selected_company = ui.item.value;
                    alert(selected_company);
                }
            });
        });
    }
} 

Html代码

<div data-role="fieldcontain">
<input name="" id="pur_com_text" placeholder="Search Company" value="" type="search" onClick="Get_All_Company()" />
</div>

虽然我将在搜索框中输入,但它会显示我的公司名称。

问题:

我希望选择company ID (com_id)进行进一步的任务。我不知道我怎么能得到那个或我该怎么做。

请指导我如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

取两个数组而不是一个。

  • com_array_name:通过for for循环推送名称
  • com_array_id:通过相同的for循环将id推入其中。

在自动填充插件中,

  • source作为com_array_name
  • 并在select属性中,提供alert(com_array_id[com_array_name.indexOf(ui.item.value)]);

如果名称在数组中是唯一的,这将有效。

答案 1 :(得分:0)

我会像在java中一样简单地创建某种地图 创建一个新对象并为每个公司名称添加一个属性或索引(在js中为恕我直言),因此如果公司名称是唯一的,您将能够使用公司名称解析该ID。

var myMap = {};
// in your loop:
myMap[com_name]=com_id;
// access:
alert(myMap["Example Company Inc."]);