开发者

jQuery autocomplete: taking JSON input and setting multiple fields from single field

I am trying to get the jQuery autocomplete plugin to take a local JSON variable as input. Once the user has selected one option from the autocomplete list, I want the adjacent address fields to be autopopulated.

Here's the JSON variable that declared as a global variable in the of the HTML file:

varJSON_address={
    "1": {
        "origin": {
            "nametag": "Home",
            "street": "Easy St",
            "city": "Emerald City",
            "state": "CA",
            "zip": "9xxxx"
        },
        "destination": {
            "nametag": "Work",
            "street": "Factory St",
            "city": "San Francisco",
            "state": "CA",
            "zip": "94104"
        }
    },
    "2": {
        "origin": {
            "nametag": "Work",
            "street": "Umpa Loompa St",
            "city": "San Francisco",
            "state": "CA",
            "zip": "94104"
        },
        "destination": {
            "nametag": "Home",
            "street": "Easy St",
            "city": "Emerald City ",
            "state": "CA",
            "zip": "9xxxx"
        }
    }
}

I want the first field to display a list of "origin" nametags: "Home", "Work". Then when "Home" is selected, adjacent fields are automatically populated with Street: Easy St, City: Emerald City, etc.

Here's the code I have for the autocomplete:

$(document).ready(function(){

    $("#origin_nametag_id").autocomplete(JSON_address, {
        autoFill:true, 
        minChars:0, 
        dataType: 'json', 
        parse: function(data) {
            var rows = new Array();
            for (var i=0; i<=data.length; i++) {
                rows[rows.length] = { data:data[i], value:data[i].origin.nametag, result:data[i].origin.nametag };
            }   
            return rows;
        }
    }).change(function(){
        $("#street_address_id").autocomplete({
          dataType: 'json',
          parse: function(data) {
            var rows = new Array();
            for (var i=0; i<=data.length; i++) {
                rows[rows.length] = { data:data[i], value:data[i].origin.street, result:data[i].origin.street };
            }   
        开发者_运维百科    return rows;
          }  
        });
    }); 
});

So this question really has two subparts: 1) How do you get autocomplete to process the multi-dimensional JSON object? (When the field is clicked and text entered, nothing happens - no list) 2) How do you get the other fields (street, city, etc) to populate based upon the origin nametag sub-array?

Thanks in advance!


Just a quick one, I believe the for loop is wrong here, resulted in nothing displayed in list

    for (var i=0; i<=data.length; i++) {}

it should be

    for (var i=0; i<data.length; i++) {}

less or equal (<=) will resulted in undefined array in rows

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜