2010-12-02 3 views
14

J'ai une entrée comme suit:jQuery - Annexer une valeur à une entrée, en gardant une liste Comma Délimité

<input type="hidden" id="attachment-uuids" value=""> 

Je voudrais être en mesure d'ajouter une valeur à l'entrée, à différents moments :

$('#attachment-uuids).val('55555'); 

résultats dans:

<input type="hidden" id="attachment-uuids" value="55555"> 

Mais faire alors:

$('#attachment-uuids).val('66666'); 

résultats dans:

<input type="hidden" id="attachment-uuids" value="66666"> 

Là où je voudrais les éléments suivants:

<input type="hidden" id="attachment-uuids" value="55555, 66666"> 

comment puis-je ajouter des valeurs lorsque la valeur est vide et quand la valeur est vide par une virgule liste délimitée?

Merci

+0

Et si la valeur est déjà dans la liste? –

+0

@Nick bonne question, cela ne devrait jamais arriver, mais si c'est le cas, je peux prendre soin de cela sur le backend. – AnApprentice

Répondre

38
$('#attachment-uuids').val(function(i,val) { 
    return val + (!val ? '' : ', ') + '66666'; 
}); 

EDIT: Comme@mkoryak noté, je fais une négation inutile de val dans l'opérateur conditionnel. Il pourrait être réécrite sans ! comme:

(val ? ', ' : '') 
+1

+1 Le vôtre est plus élégant! –

+1

C'est une idée de la beauté. Merci! – AnApprentice

+0

@AnApprentice: De rien. – user113716

9

ajouter Juste une condition lorsque vous ajoutez la valeur au champ.

var cur_val = $('#attachment-uuids').val(); 
if(cur_val) 
    $('#attachment-uuids').val(cur_val + "," + new_val); 
else 
    $('#attachment-uuids').val(new_val); 
-4

je crois que la fonction .append() est exactement à cet effet. Je viens d'essayer:

$("#attachment-uuids").append(new_val); 

pour ajouter des valeurs à un champ. Cela fonctionne et "uuids de pièce jointe" est rempli avec des fichiers CSV, selon les besoins.

0

L'ajout ne fonctionnera pas pour l'entrée. Mais vous pouvez utiliser:

$("#txt1").get(0).value+="+"; 
Questions connexes