2010-07-29 44 views
0

在我的web应用程序中,我选中了一组复选框,在它们上面填充一个文本框(如果选中了多个复选框,则它们的值出现在用逗号分隔的文本框中) 。Javascript - 用复选框填充文本框的值

这些复选框在我的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变量是我的表的行#。 使用这个以上,我没有得到预期的行为..
例如。如果我的表的第1行,我检查chkbox 1和2,它正确填充这些复选框的值。现在,对于我的表格中的2个,我只检查chkbox 3,它将填充1,2和3的值,而不是像我预期的那样填充3。

任何帮助将不胜感激。

回答

0

这将是更好的使用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

@TemEllis:嗨,谢谢你的回复。 但是,当我尝试上面的代码,我在Firebug中得到'parID是未定义的'错误消息。 – Pritish 2010-07-29 19:16:42

+0

更新了它。试试看。 – 2010-07-29 19:25:50

+0

那么,这个代码看起来不错,直到第二个最后一行即 $("#newContactComment" + rCount).val(allVals); 正如你已经改变RCOUNT的值,这是不太写入checkboxes.But以上文本框中我试着打印出allVals()阵列,我可以在数组中看到正确的值。 我应该将其更改为$(“#newContactComment”+ parID).val(allVals);反而?? – Pritish 2010-07-29 19:43:45

0

您正在尝试在引用的字符串内使用rCount变量。试试这个:

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

我试着这,但仍然不认为我可以得到所需的输出。 – Pritish 2010-07-29 19:17:15