2017-10-19 96 views
1

我有一个动态创建的html表。我为每行添加复选框。如何一次选择多个复选框?

$.each(data, function(id, value) { 
    rows.push('<tr><td><input type="checkbox" autocomplete="off" class="chkbox" name="chkbox" value="'+value.site+':'+value.client+'"></td><td>' + id + '</td><td>' + value.machine + '</td><td>' + value.state + '</td><td>' + value.date_processed + '</td><td><button type="button" onclick="resetSite(\''+ value.site+'\',\''+value.client+'\')">Reset</td></tr>'); 
}); 

我想一次选择多行,并需要将这些值发布到我的后端服务。 目前我的JavaScript功能就像;

$(document).on('change','.chkbox',function() { 
    var sites = []; 
    var value = $(this).val(); 
    var res = value.split(":"); 
    $.each($("input[class='chkbox']:checked"), function(){    
    sites.push(res[0]); 
    }); 
    alert("sites are: " + sites.join(", ")); 
    $.ajax({ 
    type: "POST", 
    url: "http://localhost:8080/cache/setProcessing?site="+res[0]+"&client="+res[1], 
    /*data: { 
     chkbox: value 
    },*/ 
    error : function(xhr, textStatus, errorThrown) { 
     alert("Failed. Error : " + errorThrown); 
    } 
    }); 
}); 

在上面的功能我警告框显示同一部位多次,如果我selecet不止一行。 我该如何克服这个问题?

+0

我认为这个问题是这样的'sites.push(RES [0]); '所以它只是一直推'res [0]'的值.. –

+0

这是res [0]是什么?所以你总是一直推相同的值 – Se0ng11

+0

@ShadowFiend不,res包含“+ value.site +':'+ value.client'的加入值。所以我分裂并得到第一个数组[0]的值 – Ratha

回答

2

变化

$(document).on('change','.chkbox',function() { 
    var sites = []; 
    var value = $(this).val(); 
    var res = value.split(":"); 
    $.each($("input[class='chkbox']:checked"), function(){    
    sites.push(res[0]); 
    }); 
    alert("sites are: " + sites.join(", ")); 
    $.ajax({ 
    type: "POST", 
    url: "http://localhost:8080/cache/setProcessing?site="+res[0]+"&client="+res[1], 
    /*data: { 
     chkbox: value 
    },*/ 
    error : function(xhr, textStatus, errorThrown) { 
     alert("Failed. Error : " + errorThrown); 
    } 
    }); 
}); 

心病·重新·spond·由于在前面的代码荷兰国际集团

$(document).on('change','.chkbox',function() { 
    var sites = []; 
    $.each($("input[class='chkbox']:checked"), function(){  
    var value = $(this).val(); // must me be inside the each 
    var res = value.split(":"); // must me be inside the each  
    sites.push(res[0]); 
    }); 
    alert("sites are: " + sites.join(", ")); 
    $.ajax({ 
    type: "POST", 
    url: "http://localhost:8080/cache/setProcessing?site="+res[0]+"&client="+res[1], 
    /*data: { 
     chkbox: value 
    },*/ 
    error : function(xhr, textStatus, errorThrown) { 
     alert("Failed. Error : " + errorThrown); 
    } 
    }); 
}); 

它只是让你点击了当前复选框的值。

所以你必须把valuereseach function里面知道,已检查所有的复选框,并得到相应的存在价值..

+0

这里我怎样才能改变Ajax调用?现在它每次调用后端。我想调用它,一旦复选框过程结束 – Ratha

+0

@Ratha你的意思是*复选框过程结束*? –

+0

对不起我的坏...这是我的要求oK。我想问,在选择多行后,我想POST该网站[]到后台服务 – Ratha