В моето уеб приложение съм поставил отметки в квадратчетата, които по време на проверката запълват текстово поле над тях.
Тези квадратчета с отметки се показват като редове в моята HTML таблица.
Ето моят 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%>);">
А съответната JS функция е както следва:
function updateTextArea(rCount) {
var allVals = new Array();
$("#contactInfo input["commentText" + rCount]:checked").each(function() {
(allVals).push($(this).val());
});
$("#newContactComment" + rCount).val(allVals);
}
Най- rCount променливата в горната функция е реда # на моята таблица. Използвайки това по-горе, не получавам очакваното поведение.
За ex. Ако за ред 1 на моята таблица, проверя chkbox 1 и 2, то правилно се попълва със стойности на тези квадратчета. Сега, за 2 от моята маса, проверявам само chkbox 3, той се населява с стойности 1,2 и 3, а не само 3, както очаквам.
Всяка помощ ще бъде много оценявана.
Отговори:
0 за отговор № 1По-добре е да използвате jQuery, за да зададете манипулатор на събития, а не да го настроите инлайн.
Искате да използвате събитие onchange, а не събитие onclick.
Ако добавите имена на класове на квадратчета (или каквото искате) към квадратчетата за отметка, ще работи следното:
$("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
});
Вярвам, че това или нещо по този начин ще направи това, което искате
0 за отговор № 2
Опитвате се да използвате rCount
променлива от цитирания низ. Опитайте това:
$("#contactInfo input["commentText" + rCount + ""]:checked")