我试图验证一些字段和复选框,并最终计算已选中复选框的数量。
我的代码当前显示警告,如果2个值不相同,并且用户需要用复选框填充公式并将它们求和,但是我不断收到此错误:
Uncaught ReferenceError: caiet is not defined
at HTMLButtonElement.<anonymous> (stoc_placi.php?id_order=384&id_sablon=80:731)
at HTMLButtonElement.dispatch (jquery.min.js:3)
at HTMLButtonElement.r.handle (jquery.min.js:3)
我的密码
$('[name^="caiet_tabel"]').change(function ()
{
if ($(this).closest('tr').find('td:not(".all") input:checked').length == 4) {
$(this).closest('tr').find('.all').prop('checked', true);
sumAll(this);
}
let index = $(this).parent().index();
sumRow(this, index);
});
$('.all').click(function ()
{
sumAll(this);
})
function sumRow(el, index)
{
sumGrup(el);
let caiet = $(el).closest('tbody');
let count = caiet.find('tr').find(' > td:eq(' + (index - 1) + ')
input: checked ').length;
caiet.find('.total td:eq(' + (index - 1) + ')').text(count);
}
function sumGrup(el)
{
let tot =
$(el).closest('.bife_caiet').find('[name^="caiet_tabel"]:checked').length;
$(el).closest('.bife_caiet').siblings('.nr_caiet').find('.showcaiet').text(tot);
}
function sumAll(el)
{
let caiet = $(el).closest('tbody');
sumGrup(el)
caiet.find('.total td').each(function (index, v)
{
let count = caiet.find('tr').find(' > td:eq(' + (index - 1) + ')
input: checked ').length;
caiet.find('.total td:eq(' + (index - 1) + ')').text(count);
})
}
$('.calculeaza').click(function ()
{
var c1 = parseInt($('.c1').val());
var c2 = parseInt($('.c2').val());
var c3 = parseInt($('.c3').val());
let sum = 0;
caiet.find('.total td').each(function (index, v)
{
sum += caiet.find('tr').find(' > td:eq(' + (index - 1) + ') input: checked ').length;
})
if (c1 + c2 + c3 != parseInt($('#placi_bugetate').val())) {
alert('Suma paginilor declarate la caiete difera de numarul de pagini
solicitat de client ');
} else if (sum != parseInt($('#placi_bugetate').val())) {
alert('Suma bifelor selectate este diferita de numar-ul paginilor
propuse ');
} else {
alert('datele sunt corecte');
}
})
$('.stoc-form').submit(function (e)
{
if ($('#placi-ofertate').val() != $('#placi_bugetate').val()) {
e.preventDefault();
// $("#myModal").modal('show');
$('[data-target="#myModal"]').trigger('click');
}
})
var modalConfirm = function (callback)
{
$("#btn-confirm").on("click", function ()
{
$("#mi-modal").modal('show');
});
$("#modal-btn-si").on("click", function ()
{
callback(true);
$("#mi-modal").modal('hide');
});
$("#modal-btn-no").on("click", function ()
{
callback(false);
$("#mi-modal").modal('hide');
});
};
modalConfirm(function (confirm)
{
if (confirm) {
//Acciones si el usuario confirma
$("#result").html("A apasat DA");
$('.post-abs').click();
} else {
//Acciones si el usuario no confirma
$("#result").html("A apasat NU");
}
});
最佳答案
您应该在函数外部声明caiet
变量。
在函数外部声明caiet
以全局访问它
let caiet;
然后在函数内部删除所有这些代码。
let caiet = $(el).closest('tbody');
然后在其中初始化
caiet
:let caiet;
$('[name^="caiet_tabel"]').change(function () {
caiet = $(this).closest('tbody');
if ($(this).closest('tr').find('td:not(".all") input:checked').length == 4) {
$(this).closest('tr').find('.all').prop('checked', true);
sumAll(this);
}
let index = $(this).parent().index();
sumRow(this, index);
});
$('.all').click(function () {
caiet = $(this).closest('tbody');
sumAll(this);
})
关于javascript - 未捕获ReferenceError:未定义caiet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58282881/