/ / Javascript - riempiendo le caselle di testo con il valore della casella di controllo - javascript, jquery, html

Javascript - riempiendo caselle di testo con il valore della casella di controllo - javascript, jquery, html

Nella mia applicazione Web, ho impostato una serie di caselle di controllo che popolano una casella di testo sopra di esse (se è selezionata più di una casella di controllo, i loro valori vengono visualizzati nella casella di testo separata da virgole).

Questo set di caselle di controllo appare come righe nella mia tabella HTML.

Ecco il mio codice HTML.

<input type="text" id="newContactComment<%=rCount %>" name="newContactComment" size="45">

<input type="checkbox" id="commentText<%=rCount %>" name="commentText" value="<%=c.getComment_text() %>"
onclick="javascript:updateTextArea(<%=rCount%>);">

E la corrispondente funzione JS è la seguente:

function updateTextArea(rCount) {
var allVals = new Array();
$("#contactInfo input["commentText" + rCount]:checked").each(function() {
(allVals).push($(this).val());
});

$("#newContactComment" + rCount).val(allVals);
}

Il RCount variabile nella funzione sopra è la riga # della mia tabella. Usando questo sopra, non sto ottenendo il comportamento previsto ..
Per es. Se per la riga 1 della mia tabella, controllo chkbox 1 e 2, viene correttamente popolato con i valori di quelle caselle di controllo. Ora, per 2 della mia tabella, controllo solo chkbox 3, viene popolato con i valori 1,2 e 3 e non solo 3 come mi aspetto.

Qualsiasi aiuto sarà molto apprezzato.

risposte:

0 per risposta № 1

Sarebbe meglio usare jQuery per impostare un gestore di eventi piuttosto che impostarlo in linea.

Si desidera utilizzare l'evento onchange non l'evento onclick.

Se aggiungi i nomi di classe delle caselle di controllo (o di qualsiasi altra cosa tu voglia) alle caselle di controllo, funzionerà quanto segue:

$("input.checkboxes").change(function(){ //when checkbox is ticked or unticked


var par = $(this).closest("tr")[0];
var parID = par.id;
var patt1=/([0-9]+)$/g;
var rCount = parID.match(patt1); //Gets number off end of id

var allVals = new Array();

//Get all checkboxes in current row that are checked
$(par).find("td input.checkboxes:checked").each(function() {
allVals.push($(this).val());
});

$("#newContactComment" + rCount).val(allVals);

allVals = null; //empty array as not needed

});

Credo che questo o qualcosa del genere farà ciò che vuoi


0 per risposta № 2

Stai cercando di usare il rCount variabile all'interno della stringa tra virgolette. Prova questo invece:

$("#contactInfo input["commentText" + rCount + ""]:checked")