代码之家  ›  专栏  ›  技术社区  ›  jjclarkson Andy Rose

多个复选框值的后置数组

  •  8
  • jjclarkson Andy Rose  · 技术社区  · 15 年前

    为什么只将“db”复选框值数组的一个值发送到服务器端脚本?

    jQuery:

    $(".db").live("change", function() {
        $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); 
        var url = "myurl.php";
        var db = [];
        $.each($('.db:checked'), function() {
            db.push($(this).val()); 
        });
        if(db.length == 0) { 
            db = "none"; 
        }       
        $.post(url, {db: db}, function(response) {
            $("#dbdisplay").html(response); 
        });
        return true;
    });
    

    HTML:

    <input type="checkbox" name="db[]" class="db" value="track"/><label for="track">track</label></br>
    <input type="checkbox" name="db[]" class="db" value="gps"/><label for="gps">gps</label></br>
    <input type="checkbox" name="db[]" class="db" value="accounting"/><label for="accounting">accounting</label></br>
    

    编辑 :我最终回答了我自己的问题,但是否有人有文件(或解释)说明为什么需要这样做?我很难找到确切的答案(如遗书)。

    4 回复  |  直到 10 年前
        1
  •  15
  •   karim79    15 年前

    $.map

    $(".db").live("change", function() {
        $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); 
        var url = "myurl.php";
    
        var db = $('.db:checked').map(function(i,n) {
            return $(n).val();
        }).get(); //get converts it to an array
    
        if(db.length == 0) { 
            db = "none"; 
        }       
        $.post(url, {'db[]': db}, function(response) {
            $("#dbdisplay").html(response); 
        });
        return true;
    });
    
        2
  •  5
  •   LPL user462990    13 年前
    var checkeditems = $('input:checkbox[name="review[]"]:checked')
                           .map(function() { return $(this).val() })
                           .get()
                           .join(",");
    $.ajax({
        type: "POST",
        url: "/index.php/openItems/",   
        data: "ids=" + checkeditems,                                        
        success: function(msg) { $(".mainContainer").html(msg); }
    });
    
        3
  •  4
  •   jjclarkson Andy Rose    15 年前

    {'db[]': db}
    
    $(".db").live("change", function() {
        $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); 
        var url = "myurl.php";
        var db = [];
        $.each($('.db:checked'), function() {
            db.push($(this).val()); 
        });
        if(db.length == 0) { 
            db = "none"; 
        }       
        $.post(url, {'db[]': db}, function(response) {
            $("#dbdisplay").html(response); 
        });
        return true;
    });
    
        4
  •  1
  •   user223748    15 年前

    $('input[name="mycheckboxes"]:checked').map(function(){ return $(this).val(); }).get().join(",");

    $mycheckboxes = explode(',',$_GET['mycheckboxes']);