gpt4 book ai didi

javascript - 如何在javascript中删除字符串中的数据

转载 作者:行者123 更新时间:2023-11-28 06:34:07 24 4
gpt4 key购买 nike

我有一个数据表,其中每一行都有复选框。在我的数据表之外有一个打印按钮,可以打印选定行的数据。我将用户选择的所有行 ID 数据存储在字符串中。现在,当用户取消选中该复选框时,我想从该字符串对象中删除行 ID 数据。每当用户取消选中该复选框时,它都不会从我之前保存的字符串中删除数据。在这里指定,我只能将字符串对象发送到 Controller 。我不知道如何实现这一目标。

下面是我的代码。

 For print,here is the function
$("img#print").live("click",function(){

var checkboxes = document.getElementsByName('CheckBoxTest');
var mnFlag = false;
var row;
checkedbills = "";
for (var i=0; i<checkboxes.length; i++)
{

if (checkboxes[i].checked)
{
row = checkboxes[i].id;
row = row.substring(row.search("_") + 1,row.length);
sData = $("#openItems").dataTable().fnGetData(row);

if(sData.SrcTypCode == "Y8")
{
mnFlag= true;
checkedbills = invoiceArray;
}
}
}
if(mnFlag)
{
$('#reBill-dialog').dialog({
autoOpen: true,
height: 600,
width: 650,
modal: true,
dialogClass: "foo1",
closeOnEscape: false,
draggable: true,
canMinimize: true,
beforeClose: cancelReBill()
});
}
else
{
if(billData.length < 1)
{
alert("Please select at least one bill to be printed");
}
else
{
$.ajax({
dataType: "json",
type: "POST",
url: 'data_print',
data: {billData:billData},
success: function(dataList){
var printDet = dataList.PrintDetails;
if(printDet == "N"){
alert(dataList.PrintMessage);
}
else{
alert(dataList.PrintMessage);
}

},
error: function(xhr, ajaxOptions, thrownError) {
}
});
}
}
});

下面是选中复选框时我将数据存储在字符串中的代码。

                                                                  $('#bills tbody tr   input[name="CheckBoxTest"]').live('change',function(e){
var row=$(this).closest("tr").get(0);
var invsysNumber = $('#bills').dataTable().fnGetData(row).invSysNumber;
var invverNumber = $('#bills').dataTable().fnGetData(row).invVerNumber;
var data = $('#bills').dataTable().fnGetData(row).invSysNumber+','+$('#bills').dataTable().fnGetData(row).invVerNumber;
var index ;
if(data in checkboxAccIndicator )
{
index=1;
}
else
{
index=-1;
}

if($(this).is(':checked') && (index == -1))
{

checkboxAccIndicator[$('#bills').dataTable().fnGetData(row).invSysNumber+
","+$('#bills').dataTable().fnGetData(row).invVerNumber]=
$('#bills').dataTable().fnGetData(row).arLocation;

if(invoiceArray == ""){
invoiceArray = "~" + invsysNumber + "," + invverNumber ;
}else {
invoiceArray = invoiceArray + "~" + invsysNumber + "," + invverNumber ;
}


// Otherwise, if checkbox is not checked and row ID is in list of selected row IDs
}
else if (!($(this).is(':checked')) && (index != -1))
{
delete checkboxAccIndicator[$('#bills').dataTable().fnGetData(row).invSysNumber+
","+$('#bills').dataTable().fnGetData(row).invVerNumber];

}

});

最佳答案

我建议您将复选框 ID 列表作为数组进行管理,然后在将其传递给 Controller ​​时将其序列化为字符串。这种方法要简单得多:

// Initialize array
var invoiceArray = [];

// Add item to array
invoiceArray.push(invsysNumber + "," + invverNumber);

// Remove specified item from array
var itemToRemove = invsysNumber + "," + invverNumber;
for (var i=0, il=invoiceArray.length; i<il; i++) {
if (invoiceArray[i] === itemToRemove) {
invoiceArray.splice(i, 1);
break;
}
}

// Convert array to a string for your controller
var invoiceArrayString = invoiceArray.join('~');

或者,如果您保留当前的解决方案,其中“invoiceArray”实际上是一个字符串(命名不佳),则无论如何都必须将其转换为数组才能删除项目。

// Remove item from "invoiceArray" string
var invoiceArraySplit = invoiceArray.split('~');
var itemToRemove = invsysNumber + "," + invverNumber;
for (var i=0, il=invoiceArraySplit.length; i<il; i++) {
if (invoiceArraySplit[i] === itemToRemove) {
invoiceArraySplit.splice(i, 1);
break;
}
}
// Convert back to string
var invoiceArray = invoiceArraySplit.join('~');

关于javascript - 如何在javascript中删除字符串中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34436988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com