2010-12-02 5 views
14

Ich habe eine Eingabe wie folgt:jQuery - Fügen Sie einen Wert an einen INPUT es eine kommagetrennte Liste halten

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

Ich möchte einen Wert auf den Input, zu verschiedenen Zeiten in der Lage sein anhängen :

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

Ergebnisse in:

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

Aber dann tun:

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

Ergebnisse in:

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

Wo möchte ich folgendes:

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

wie kann ich Werte anhängen, wenn der Wert leer ist und wenn der Wert nicht leer ist mit einem Komma Begrenzte Liste?

Dank

+0

Was ist, wenn der Wert bereits in der Liste ist? –

+0

@Nick gute Frage, das sollte nie passieren, aber wenn es tut, kann ich das auf dem Backend kümmern. – AnApprentice

Antwort

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

EDIT: Wie @mkoryak bemerkt, ich bin in dem Bedingungsoperator eine unnötige Negation val tun. Es könnte ohne die ! wie folgt umgeschrieben werden:

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

+1 Ihres ist eleganter! –

+1

Das ist ein Gedanke an Schönheit. Vielen Dank! – AnApprentice

+0

@AnApprentice: Gern geschehen. – user113716

9

Fügen Sie einfach eine bedingte, wenn Sie den Wert auf dem Feld hinzufügen.

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

Ich glaube, die .append() Funktion genau für diesen Zweck ist. Ich habe gerade versucht:

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

an Werte an ein Feld anhängen. Dies funktioniert und "attachment-uuids" wird nach Bedarf mit CSVs gefüllt.

0

Append wird nicht für die Eingabe arbeiten. Aber Sie können verwenden:

$("#txt1").get(0).value+="+"; 
Verwandte Themen