Javascript 为动态创建的图元选择多个复选框

Javascript 为动态创建的图元选择多个复选框,javascript,jquery,json,html,Javascript,Jquery,Json,Html,我想通过单击动态生成的复选框来创建一个包含0和1值的JSON数组 如果未选中该复选框,则我希望在JSON数组中存储0,否则如果选中该复选框,则我希望存储1 更新: 当我在文本框中添加语句时,我还希望它的值与0和1一起被推送到提交按钮上的JSON数组中 在submit按钮上,我想生成所选条目的完整JSON对象 这是我的密码: $(函数(){ var-uttIdx=0; var-uttancedata=新数组(); $('btnDeleteRow').hide(); $('btnAddUtte

我想通过单击动态生成的复选框来创建一个包含0和1值的JSON数组

如果未选中该复选框,则我希望在JSON数组中存储0,否则如果选中该复选框,则我希望存储1

更新: 当我在文本框中添加语句时,我还希望它的值与0和1一起被推送到提交按钮上的JSON数组中

在submit按钮上,我想生成所选条目的完整JSON对象


这是我的密码:

$(函数(){
var-uttIdx=0;
var-uttancedata=新数组();
$('btnDeleteRow').hide();
$('btnAddUtterance')。单击(函数(){
大众传播();
});
$(“#myInput”).keyup(函数(事件){
//如果用户按enter键,代码将保存到表中
如果(event.keyCode===13)
{
大众传播();
}
});
函数populateutterrance()
{
$('btnDeleteRow').show();
让useroutrance=$('#myInput').val();
让标记=`${useroutrance}`;
$(“#tblText tbody”)。附加(标记);
uttIdx+=1;
$('#myInput').val('');
}
$('#btnsupmit')。单击(函数(){
var arr=$('input[name=“早餐”]:checked').map(函数()
{
返回1;
}).get();
//像这样的东西?每一个复选框。
//我需要的句子文本也在这里。
//push({话语:,早餐:0,…。});
});
//查找并删除选定的表行
$(文档).on('click','btndeleetrow',函数(e){
$(“#tblText tbody”).find('input[name=“record”]”)。每个(函数(){
如果($(this).is(“:checked”)){
$(this.parents(“tr”).remove();
$('#testOutput').html('');
}
});
});
});

注释视图
输入要注释的文本
添加话语
挑选
言语
早餐
停车场
大床
大床
双人床
标准房间类型
客房类型
豪华房型
可到达的
门房
休息室通道
执行层
删除话语

Submit
不要在选择器中使用
:checked
修饰符,因为这只处理复选框。您希望处理所有框,并根据是否选中返回不同的值

var arr = $("input[name=breakfast]").map(function() {
    return this.checked ? 1 : 0;
}).get();
要获取包含表中所有数据的对象,请执行以下操作:

var arr = $("tblText tbody tr").map(function() {
    var row = {};
    $(this).find("td").each(function() {
        var checkbox = $(this).find(":checkbox");
        if (checkbox.length) {
            row[checkbox.attr('name')] = checkbox.val();
        } else {
            row.utterance = $(this).text();
        }
    });
    return row;
}).get();

不要在选择器中使用
:checked
修饰符,因为这只处理复选框。您希望处理所有框,并根据是否选中返回不同的值

var arr = $("input[name=breakfast]").map(function() {
    return this.checked ? 1 : 0;
}).get();
要获取包含表中所有数据的对象,请执行以下操作:

var arr = $("tblText tbody tr").map(function() {
    var row = {};
    $(this).find("td").each(function() {
        var checkbox = $(this).find(":checkbox");
        if (checkbox.length) {
            row[checkbox.attr('name')] = checkbox.val();
        } else {
            row.utterance = $(this).text();
        }
    });
    return row;
}).get();

您可以向新的
tr
中添加一个类,并找到这些元素以获得所需的数据。即:

重要信息:此方法使用当前的动态HTML

$(函数(){
var-uttIdx=0;
var-uttancedata=新数组();
$('btnDeleteRow').hide();
$('btnAddUtterance')。单击(函数(){
大众传播();
});
$(“#myInput”).keyup(函数(事件){
//如果用户按enter键,代码将保存到表中
如果(event.keyCode===13){
大众传播();
}
});
函数populateutterrance(){
$('btnDeleteRow').show();
让useroutrance=$('#myInput').val();
让标记=`${useroutrance}`;
$(“#tblText tbody”)。附加(标记);
uttIdx+=1;
$('#myInput').val('');
}
$('#btnsupmit')。单击(函数(e){
e、 预防默认值();
让数组=[];//包含每个选定行的数组。
$(“#tblText tbody tr.话语”)。每个(函数(){
let row={};//特定选定行的数据。
让outtanceLength=$(this).children('td:eq(0)')).children('input[name=“record”]:checked').length;
如果(OuttanceLength==1){//选中行
var话语=$(this).children('td:eq(1)').text();
行['outrance']=话语;
行['checks']=[];
$(this).children('td:gt(1)').each(function(){
让$input=$(this.children('input');
行['checks'].push({[$input.attr('name')]:$input.is(':checked')?1:0});
});  
array.push(行);
}      
});
console.log(数组);
//var arr=$('input[name=“早餐”]').map(函数(){
//return$(this).is(':checked')?1:0;
//}).get();
//像这样的东西?每一个复选框。
//我需要的句子文本也在这里。
//push({话语:,早餐:0,…。});
});
//查找并删除选定的表行
$(文档).on('click','btndeleetrow',函数(e){
$(“#tblText tbody”).find('input[name=“record”]”)。每个(函数(){
如果($(this).is(“:checked”)){
$(this.parents(“tr”).remove();
$('#testOutput').html('');
}
});
});
});

注释视图
输入要注释的文本
添加话语
挑选
言语
早餐
停车场
大床
大床
双人床
标准房间类型
客房类型
豪华房型
可到达的
门房
休息室通道
执行层
删除话语

提交
您可以向新的
tr
添加一个类,并找到这些元素以获得所需的数据。即:

重要信息:此方法使用当前的动态HTML

$(函数(){
var-uttIdx=0;
var-uttancedata=新数组();
$('btnDeleteRow').hide();
$('btnAddUtterance')。单击(函数(){
大众传播();
})