带有复选框的JavaScript操作

带有复选框的JavaScript操作,javascript,html,checkbox,Javascript,Html,Checkbox,我有一组复选框,当选中或取消选中复选框时,我需要一个局部变量“address”,该变量包含复选框的值,但采用我的格式。 样本: 如果我选择 第1组-vl1和vl3 第2组-vl1 第3组-vl1、vl2和vl3 http://localhost/?param=1 &cb[gr1]=vl1-vl3 &cb[gr2]=vl1 &cb[gr3]=vl1-vl2-vl3 如何在Java脚本中创造这样的奇迹 这是html的来源 <form action="form.php"

我有一组复选框,当选中或取消选中复选框时,我需要一个局部变量“address”,该变量包含复选框的值,但采用我的格式。 样本:

如果我选择 第1组-vl1和vl3 第2组-vl1 第3组-vl1、vl2和vl3

http://localhost/?param=1
&cb[gr1]=vl1-vl3
&cb[gr2]=vl1
&cb[gr3]=vl1-vl2-vl3
如何在Java脚本中创造这样的奇迹

这是html的来源

<form action="form.php" method="post">
    <fieldset>
        <legend>Group 1</legend>
        <input type="checkbox" name="gr1[]" value="vl1"/>value 1<br/>
        <input type="checkbox" name="gr1[]" value="vl2"/>value 2<br/>
        <input type="checkbox" name="gr1[]" value="vl3"/>value 3<br/>
    </fieldset>

    <fieldset>
        <legend>Group 2</legend>
        <input type="checkbox" name="gr2[]" value="vl1"/>value 1<br/>
        <input type="checkbox" name="gr2[]" value="vl2"/>value 2<br/>
    </fieldset>

    <fieldset>
        <legend>Group 3</legend>
        <input type="checkbox" name="gr3[]" value="vl1"/>value 1<br/>
        <input type="checkbox" name="gr3[]" value="vl2"/>value 2<br/>
        <input type="checkbox" name="gr3[]" value="vl3"/>value 3<br/>
    </fieldset>
</form>

第一组
值1
值2
值3
第2组 值1
值2
第3组 值1
值2
值3

要解决此问题,您需要获取参数,然后检查参数所需的值依赖性,请检查以下示例:

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = "param=1&cb[gr1]=vl1-vl3&cb[gr2]=vl1&cb[gr3]=vl1-vl2-vl3",//window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

var paramNum = getUrlParameter('param');
var paramGr  = getUrlParameter('cb[gr' + paramNum + ']');
var paramGrSplit = paramGr.split('-');

var valueString = '';
for(var i = 0; i < paramGrSplit.length; i++){
    $("input[value=" + paramGrSplit[i] + "]").prop('checked', true);
}
var getUrlParameter=函数getUrlParameter(sParam){
var sPageURL=“param=1&cb[gr1]=vl1-vl3&cb[gr2]=vl1&cb[gr3]=vl1-vl2-vl3”,//window.location.search.substring(1),
sURLVariables=sPageURL.split(“&”),
sParameterName,
我
对于(i=0;i


当您有类似的问题时,您需要将问题减去sub,然后为每个sub创建代码,这将有助于您将来解决类似的问题

要解决此问题,您需要获取参数,然后检查参数所需的值依赖性,请检查以下示例:

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = "param=1&cb[gr1]=vl1-vl3&cb[gr2]=vl1&cb[gr3]=vl1-vl2-vl3",//window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

var paramNum = getUrlParameter('param');
var paramGr  = getUrlParameter('cb[gr' + paramNum + ']');
var paramGrSplit = paramGr.split('-');

var valueString = '';
for(var i = 0; i < paramGrSplit.length; i++){
    $("input[value=" + paramGrSplit[i] + "]").prop('checked', true);
}
var getUrlParameter=函数getUrlParameter(sParam){
var sPageURL=“param=1&cb[gr1]=vl1-vl3&cb[gr2]=vl1&cb[gr3]=vl1-vl2-vl3”,//window.location.search.substring(1),
sURLVariables=sPageURL.split(“&”),
sParameterName,
我
对于(i=0;i


当您有类似的问题时,您需要将问题减去sub,然后为每个sub创建代码,这将有助于您将来解决类似的问题

要在客户端获取这些字符串,请执行以下操作:

[…document.querySelectorAll('fieldset')].forEach(函数(fs){
fs.addEventListener('change',函数(事件){
让checkedValues=[…this.querySelectorAll(':checked')].map(cb=>cb.value).join('-'))
窗口[this.dataset.group].textContent=checkedValues
})
})
字段集{
浮动:左;
宽度:27%;
}

第一组
值1
值2
值3
第2组 值1
值2
第3组 值1
值2
值3
第一组: 第2组:
第3组:
要在客户端获取这些字符串,请执行以下操作:

[…document.querySelectorAll('fieldset')].forEach(函数(fs){
fs.addEventListener('change',函数(事件){
让checkedValues=[…this.querySelectorAll(':checked')].map(cb=>cb.value).join('-'))
窗口[this.dataset.group].textContent=checkedValues
})
})
字段集{
浮动:左;
宽度:27%;
}

第一组
值1
值2
值3
第2组 值1
值2
第3组 值1
值2
值3
第一组: 第2组:
第三组:
请将您的代码从小提琴移到此网站本身。我希望您知道POST请求实际上发送的是正文中的数据,而不是查询参数中的数据。如果是,并且您知道自己在做什么,那么您必须自己处理数据发送过程:截取表单提交、构造主体和查询、发送数据。在第二步(构造查询)中,将所有选中的复选框排列在一个字段集中,并连接它们的值,就是这样。我想在我的字符串格式中使用参数设置本地JS字符串变量我的解决方案,但有问题,请将您的代码从FIDLE移动到此网站本身。我希望您知道POST请求实际上在正文中发送数据,而不是在查询参数中。如果是,并且您知道自己在做什么,那么您必须自己处理数据发送过程:截取表单提交、构造主体和查询、发送数据。在第二步(构造查询)中,将所有选中的复选框排列在一个字段集中,并连接它们的值,就是这样。我想在我的字符串格式中用参数设置本地JS字符串变量我的解决方案,但问题是没有GET,没有POST,没有地址位置。我需要更改实时(onClick)本地字符串变量示例:如果我选中了gr1-vl1,那么$my_var=“cb[gr1]=vl1”。如果取消勾选,则$my_var=“”否。无获取,无发布,无地址位置。我需要更改实时(onClick)本地字符串变量示例:如果我选中了gr1-vl1,那么$my_var=“cb[gr1]=vl1”。如果取消勾选,则$my_var=”“哇。此超级ES6解决方案,但在旧浏览器中不起作用:(易于调整到ES5。您想要ES5?请帮助,为什么我的对象中存在“未定义”值?请参见Wow。此超级ES6解决方案,但在旧浏览器中不起作用:(易于调整到ES5。您想要ES5?请帮助,为什么我的对象中存在“未定义”值?请参见