在文本字段中添加和删除某个值

时间:2011-11-03 17:45:55

标签: javascript jquery

我检查的每个复选框,我用id

填充输入

现在,如果用户取消选中该复选框,如何检索我输入的id

EXP:

庄园SCSP已经过检查;

input以此格式接收SCSP值= 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(""); 
    }
});

不知道我是否清楚,任何问题,都是我的客人。

感谢。

4 个答案:

答案 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());
});

这是a working fiddle

答案 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());
});

这应该返回已经检查过的所有复选框项。然后,您不必担心从文本框中添加和删除数据。我只是警告价值,你会想把它们存储到一个对象或更有用的东西。