javascript - jquery autocomplete. tracking values instead of labels -
i have jquery autocomplete field want add multiple values in same input field. in example see here, http://jqueryui.com/demos/autocomplete/#multiple value , label same things work fine whats in select event. however, in case, when user chooses name, want input box show labels, want post values when submit form. try around it, added hidden field in form , have separate array gets value, problem when user backspaces out of value. still in array. ideas how fix that? or perhaps better solutions?
var friend_data = [{"label":"john doe","value":"12345"},{"label":"jane doe","value":"123456"}]; $( "#friends" ) // don't navigate away field on tab when selecting item .bind( "keydown", function( event ) { if ( event.keycode === $.ui.keycode.tab && $( ).data( "autocomplete" ).menu.active ) { event.preventdefault(); } }).autocomplete({ minlength: 0, //source: friend_data, source: function( request, response ) { // delegate autocomplete, extract last term response( $.ui.autocomplete.filter( friend_data, extractlast( request.term ) ) ); }, delay: 0, autofocus: true, focus: function(event, ui) { return false; }, select: function( event, ui ) { var terms = split( this.value ); // remove current input terms.pop(); // add selected item terms.push( ui.item.label ); friend_id_list.push( ui.item.value ); console.log(friend_id_list); // add placeholder comma-and-space @ end terms.push( "" ); this.value = terms.join( ", " ); console.log(this.value); return false; } }) .data( "autocomplete")._renderitem = function( ul, item ) { var fb_pic_path = '<img src="http://graph.facebook.com/' + item.value + '/picture?type=square">' ; return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( "<a>" + fb_pic_path + item.label + "</a>" ) .appendto( ul ); };
a bit reluctant post this, b/c new javascript/jquery , cant possibly best way it, if new me , looking works, using keep things in sync.
$("#friends").keyup(function(event) { var friend_label_count = this.value.split(",").length - 1; var friend_value_count = friend_id_list.length; if (friend_label_count < friend_value_count) { friend_id_list.pop(); } });
Comments
Post a Comment