0

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

我的一张桌子是Companycom_id & com_name. 我已经使用这个创建了简单的搜索文本框。这与静态和动态数组一起正常工作。

这是我从数据库中获取记录并设置为自动完成的代码。

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)为进一步的任务选择那个。我不知道我怎么能得到那个或者我应该为此做些什么。

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

4

2 回答 2

2

取两个数组而不是一个。

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

在自动完成插件中,

  • sourcecom_array_name
  • select财产中,给alert(com_array_id[com_array_name.indexOf(ui.item.value)]);

如果名称在数组中是唯一的,这将起作用。

于 2013-09-10T06:54:02.427 回答
0

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

var myMap = {};
// in your loop:
myMap[com_name]=com_id;
// access:
alert(myMap["Example Company Inc."]);
于 2013-09-10T05:23:24.847 回答