我检查的每个复选框,我用id
现在,如果用户取消选中该复选框,如何检索我输入的id
?
EXP:
庄园SC
,SP
已经过检查;
input
以此格式接收SC
,SP
值= SC,SP
但是用户取消选中SC值复选框,然后应从输入中删除SC
。
这就是我正在使用复选框填充输入。
var separador = ",";
var estadosS = "";
$(".checkboxEstados").live("click", function(){
if($(this).is(":checked")){
estadosS += (estadosS == "") ? "" : separador;
estadosS += $(this).attr("id");
$("#holdEstados").val(estadosS);
}else{
// now i'm just cleaning all the input,
// but i need to clean only the checkbox that was unchecked
$("#holdEstados").val("");
}
});
不知道我是否清楚,任何问题,都是我的客人。
感谢。
答案 0 :(得分:1)
解决此问题的一种简单方法是避免解析和删除部分数据。而不是尝试删除“SC”,而是每次选中任何复选框时重新生成文本字段的全部内容。
当检测到复选框点击事件时,删除文本输入字段的内容,扫描所有选中的复选框,并在文本输入字段中包含它们的ID。
答案 1 :(得分:0)
你的逻辑可以大大简化。只需抓住点击事件触发时检查的每个复选框:
$(".checkboxEstados").live("click", function() {
var aryIds = new Array();
$(".checkboxEstados:checked").each(function() {
aryIds.push($(this).attr("id"));
});
$("#holdEstados").val(aryIds.toString());
});
答案 2 :(得分:0)
我会将值存储在数组中并从中添加和删除值,然后将数组写入输出,而不是每次都尝试解析文本:
var estadosS = [];
$(".checkboxEstados").live("click", function(){
var index;
if($(this).is(":checked")){
// append the id to the list
estadosS.push($(this).attr("id"));
}else{
index = estadosS.indexOf($(this).attr("id"));
if(index > -1) {
estadosS.splice(index, 1);
}
}
$("#holdEstados").val(estadosS.join(separador));
});
答案 3 :(得分:-1)
如果您要做的只是从所有复选框中获取已检查值的列表,您可以这样做:
$('.checkboxEstados:checked').each(function(){
alert($(this).val());
});
这应该返回已经检查过的所有复选框项。然后,您不必担心从文本框中添加和删除数据。我只是警告价值,你会想把它们存储到一个对象或更有用的东西。