2010-02-23 6 views
1

J'ai une page avec deux entrées: users_list et users_ids. jquery.autocomplete est utilisé pour compléter automatiquement le users_list. users_ids est un champ masqué. Lorsque l'utilisateur est sélectionné et ajouté au users_list, son identifiant est ajouté au users_ids. Tout fonctionne bien. Mais la question est de savoir comment supprimer la valeur de user_ids si l'utilisateur est retiré de users_list?Comment supprimer la valeur du champ masqué en utilisant jquery.autocomplete

Le script:

$(document).ready(function(){ 
    function formatItem(row) { 
     return row[0] + " (<strong>id: " + row[1] + "</strong>)"; 
    } 
    function formatResult(row) { 
     return row[0].replace(/(<.+?>)/gi, ''); 
    } 
    $("#users_list").autocomplete("<%= url_for(:controller => :users, 
               :action => :autocomplete_users_list) %>", 
    { 
     multiple: true, 
     matchContains: true, 
     mustMatch: true, 
     autoFill: true, 
     formatItem: formatItem, 
     formatResult: formatResult 
    }); 

    $("#users_list").result(function(event, data, formatted) { 
     var hidden = $("#users_ids"); 
     hidden.val((hidden.val() ? hidden.val() + ";" : hidden.val()) + data[1]); 
    }); 
    }); 

Répondre

0

Il semble que votre question n'a rien à voir avec jquery autocomplete ... Vous voulez supprimer un élément d'un tableau sérialisé. Donc: Votre valeur de champ caché est comme ceci: id; anotherid; onelastid Ainsi, le code serait:

function remove_id_from_hidden(id) { 
    var hidden = $("#users_ids"); 
    var arr = hidden.val().split(";"); # transforms the string into an array 
    arr.splice(arr.indexOf(id), 1); # removes the item from the array 
    hidden.val(arr.join(";")); # sets the value again 
} 
0

J'ai un HiddenField où je mis en mémoire les IDs des valeurs sélectionnées.

Afin de rattraper quand il n'y a pas de valeur, et les utilisateurs a retiré une valeur i utilisation:

$('input.autocomplete').blur(function() { 
    if ($.trim($(this).val()) < 1) { 
     $(this).siblings('input[type="hidden"]').val(0); 
    } 
}); 
$('input.autocomplete').autocomplete(/* autocomplete code */); 

les captures d'événement flou lorsque les utilisateurs se déplace portent l'emballage d'entrée saisie semi-automatique et ensembles HiddenField à 0, indépendamment de ce que fait l'autocomplétion.

Questions connexes