2010-12-02 14 views
14

tengo una entrada como sigue:jQuery - Anexa un valor a una entrada, manteniendo una lista delimitada por comas

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

Me gustaría ser capaz de añadir un valor a la entrada, en diferentes momentos :

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

resultados en:

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

pero luego haciendo:

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

resultados en:

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

donde me gustaría lo siguiente:

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

cómo puedo anexar valores cuando el valor está vacío y cuando el valor no está vacío con una coma lista delimitada?

Gracias

+0

¿Qué pasa si el valor ya está en la lista? –

+0

@Nick buena pregunta, eso nunca debería suceder, pero si lo hace puedo encargarme de eso en el back-end. – AnApprentice

Respuesta

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

EDIT: Como se señaló @mkoryak, estoy haciendo una negación innecesaria de val en el operador condicional. Podría ser reescrita sin la ! como:

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

+1 ¡El tuyo es más elegante! –

+1

Eso es una idea de belleza. ¡Gracias! – AnApprentice

+0

@AnApprentice: De nada. – user113716

9

Sólo añadir un condicional cuando se agrega el valor al campo.

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

creo que la función .append() es exactamente para este propósito. Acabo de probar:

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

para agregar valores a un campo. Esto funciona y "attachment-uuids" se llena con CSV, según sea necesario.

0

Append no funcionará para la entrada. Pero puede usar:

$("#txt1").get(0).value+="+"; 
Cuestiones relacionadas