1

所以这个杀了我..

我正在尝试使用 jQuery UI 自动完成插件来处理 webSQL 表。我遇到的问题是我需要从 json 对象数组中获取两个字段;一个 id 字段和一个 name 字段,并将它们推送到 JSON 对象数组中,然后将其绑定到自动完成插件。

当用户在自动完成输入字段中键入时,他们应该只看到名称字段,并且在选择名称时应该将 id 字段设置为变量。

下面是我的一个例子:

    var allFields = [];

    db.runInTxn({
        dbAction: function (txn) {
            txn.executeSql('SELECT <Id>, <Field1>, <Field2> FROM <Table>', null, function (txn, resultSet) {
                var rows = resultSet.rows;
                for (var i = 0; i < rows.length; i++) {
                    var row = rows.item(i);
                    allFields.push(
                         {1: row.<Id>, 2: row.<Field1>, 3: row.<Field2>}
                    );

                }

            }, function (txn, error) {
                console.log('Select error.', error);
            });
        }
    });

    //autocomplete field1 input
    $("#field1").autocomplete({
        source: allFields, 
        select: function (event, ui) {
            alert(ui.<Id>);
            //return false;
        }
    });

这行不通。任何帮助将不胜感激。

4

1 回答 1

1

所以我想通了。。

实际上真的很简单..需要为要成为自动完成值的字段指定一个名为“值”的键。因此,field1将是自动完成的值,并且在选择field1时将返回ID。

var allFields = [];

db.runInTxn({
    dbAction: function (txn) {
        txn.executeSql('SELECT <Id>, <Field1>, <Field2> FROM <Table>', null, function (txn, resultSet) {
            var rows = resultSet.rows;
            for (var i = 0; i < rows.length; i++) {
                var row = rows.item(i);
                allFields.push(
                     {1: row.<Id>, value: row.<Field1>, 3: row.<Field2>}
                );

            }

        }, function (txn, error) {
            console.log('Select error.', error);
        });
    }
});

//autocomplete field1 input
$("#field1").autocomplete({
    source: allFields, 
    select: function (event, ui) {
        alert(ui.item.<Id>);
        //return false;
    }
});
于 2013-02-01T21:58:44.497 回答