Uncaught TypeError: невозможно прочитать свойства неопределенного значения (чтение «keyCode»)Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Гость
 Uncaught TypeError: невозможно прочитать свойства неопределенного значения (чтение «keyCode»)

Сообщение Гость »


Надеюсь, у меня все хорошо, поэтому я создаю POS-систему, обычно добавляю товар в корзину. Я проверил, что товар добавлен и данные в порядке:

Код: Выделить всё

function addToCart(id, name, origQuantity, price_v, price_v2 = null, price_v3 = null, img, illimited_quantity) {

// Fetching the updated quantity
let quantityElement = document.getElementById('product-qty-' + id);
let quantity = origQuantity; // original quatity

if (quantityElement) {
let domQuantity = parseInt(quantityElement.textContent.replace('Qty: ', ''));
if (domQuantity !== origQuantity) {
quantity = domQuantity;
}
}
if (illimited_quantity == 1) {

if (!("id" + id in cart)) {
cart['id' + id] = {
'id': id,
'quantity': 1,
'name': name,
'price': price_v,
'img': img,
};

let imgurl = '';

if (img != '') {
imgurl = '/images/product/' + img;
} else {
imgurl = '/assets/img/product/noimage.png';
}

let output = `
[list]
[*]


[i]

[h4]${name}[/h4]

#${id}












[*]

${price_v} Da
${price_v2 != null && price_v2 != '' ? `${price_v2} Da` : ''}
${price_v3 != null && price_v3 != '' ? `${price_v3} Da` : ''}


[*][url=javascript:void(0);]
[img]/assets/img/icons/delete-2.svg[/img]
[/url]
[/list]
`;
// append html
$('#cart').append(output);
} else {
cart['id' + id].quantity = parseInt(cart['id' + id].quantity) + 1;
$('#prod_quant_' + id).val(cart['id' + id].quantity);
}
} else {
if (!("id"  + идентификатор в корзине)) {
if (quantity == 0) {
Swal.fire(
'Erreur',
'Repture Stock!',
' error'
);

return;
 cars['id' + id] = {
'id': id,
'количество': 1,
'имя': имя,
'цена': цена_v,
'img': img,
};

let imgurl = '';

if (img != '') {
imgurl = '/images/product/' + img;
} else {
imgurl = '/assets/img/product/noimage.png';

let output = `



[img]${imgurl}[/img]



${name

< !-- Замените отображение цены раскрывающимся списком выбора -->

${price_v} Да
${price_v2 != null && Price_v2 != '' ? `${price_v2} Da` : '' ${price_v3 != null && Price_v3 != '' ? `${price_v3} Да` : ''}

[url=javascript:void(0)][/i][/url]




[i][/i]
[i]
[/i]




`;

// Добавляем HTML
$('#cart').append(output);
< br />
} else {
// проверяем, достигнуто ли максимальное количество
if ((cart['id' + id].quantity + 1) > количество) {
Swal.fire(
'Ошибка',
'Максимальное количество',
'ошибка'
);
} else {
cars['id' + id].quantity = parseInt(cart['id' + id].quantity) + 1;
$('#prod_quant_' + id).val(cart['id' + id].quantity);
   CalculTotal();
$('input[placeholder="SKU / Nom produit"]') .val('');

```

когда товар добавлен, я проверяю распродажу и обновляю цену и количество :< br />

```
function checkSale() {
// проверяем, пуста ли корзина
if (jQuery.isEmptyObject(cart)) {
Swal.fire(
'Ошибка',
'Корзина пуста!',
'ошибка'
);
return;
 />
// Проверяем количество каждого товара в корзине, чтобы убедиться, что оно не ниже уровня запасов
for (const [key, item] of Object.entries(cart)) {
if ( !updateProductQuantity(item.id, item.name, item.quantity)) {
// Остановить продажу или обработать эту ошибку дальше, поскольку количество стало отрицательным
return;
 

updateCheckoutPrice();

if ($('#client_select').val() == 0) {
addSale( );
} else {
// получаем информацию о клиенте (кредит)
const url = '/pos/client/' + $('#client_select').val();
$.get(url, function(data, status) {
if (status == 'success') {
// устанавливаем его в модальном режиме
$('#modal_client_fullname') .text(data.fullname);
$('#modal_client_credit').text(data.credit + ' Da');

// показать модальное
$(' #sellModalTrigger').click();
} else {
Swal.fire(
'Ошибка',
'Клиент не найден!',
'ошибка'
);
 });
 
тогда я' добавляю распродажу:

Код: Выделить всё

function addSale() {
// check if cart is empty
if (jQuery.isEmptyObject(cart)) {
Swal.fire(
'Erreur',
'Cart empty!',
'error'
);
return;
}

$.ajax({
url: "{{ route('pos.sale.store') }}",
type: 'POST',
data: {
_token: '{{ @csrf_token() }}',
cart: $('#cart'),
client: $('#client_select').val(),
paid: $('#paid').val(),
discount: $('#discount').val(),
new_total: $('#new_total_input').val()
},
beforeSend: function() {
// show loader
$("#global-loader").fadeIn("slow");
},
error: function() {
// hide loader
$("#global-loader").fadeOut("slow");

Swal.fire(
'Erreur',
'veuillez réessayer de nouveau',
'error'
);
},
success:  function(data, status) {
// скрываем загрузчик
$("#global-loader").fadeOut("slow");

// печатаем счет
$.print(data);
$.print(data);

// перезагрузка продуктов
reloadProducts();

// опорожнение корзины
$('#cart').html('');
cars = {};

// пересчет суммы
CalculTotal ();

// модальное закрытие
$("#sellModal .close").click();
 });
}
когда я нажимаю кнопку разместить заказ: it say : Uncaught TypeError: Cannot read properties of undefined (reading 'keyCode')
and in console its referencing to script.js file :

Код: Выделить всё

/*! -----------------------------------------------------------------------------------

Template Name: Cuba Admin
Template URI: http://admin.pixelstrap.com/cuba/theme
Description: This is Admin theme
Author: Pixelstrap
Author URI: https://themeforest.net/user/pixelstrap

-----------------------------------------------------------------------------------

01. password show hide
02. Background Image js
03. sidebar filter
04. Language js
05. Translate js

--------------------------------------------------------------------------------- */

(function ($) {
"use strict";
$(document).on("click", function (e) {
var outside_space = $(".outside");
if (
!outside_space.is(e.target) &&
outside_space.has(e.target).length === 0
) {
$(".menu-to-be-close").removeClass("d-block");
$(".menu-to-be-close").css("display", "none");
}
});

$(".prooduct-details-box .close").on("click", function (e) {
var tets = $(this).parent().parent().parent().parent().addClass("d-none");
console.log(tets);
});

if ($(".page-wrapper").hasClass("horizontal-wrapper")) {
$(".sidebar-list").hover(
function () {
$(this).addClass("hoverd");
},
function () {
$(this).removeClass("hoverd");
}
);
$(window).on("scroll", function () {
if ($(this).scrollTop() < 600) {
$(".sidebar-list").removeClass("hoverd");
}
});
}

/*----------------------------------------
password show hide
----------------------------------------*/
$(".show-hide").show();
$(".show-hide span").addClass("show");

$(".show-hide span").click(function () {
if ($(this).hasClass("show")) {
$('input[name="login[password]"]').attr("type", "text");
$(this).removeClass("show");
} else {
$('input[name="login[password]"]').attr("type", "password");
$(this).addClass("show");
}
});
$('form button[type="submit"]').on("click", function () {
$(".show-hide span").addClass("show");
$(".show-hide")
.parent()
.find('input[name="login[password]"]')
.attr("type", "password");
});

/*=====================
02.  Фоновое изображение js
=========================*/
$(".bg-center").parent ().addClass("b-center");
$(".bg-img-cover").parent().addClass("bg-size");
$(".bg -img-cover").each(function () {
var el = $(this),
src = el.attr("src"),
родитель = el.parent( );
parent.css({
"background-image": "url(" + src + ")",
"background-size": "cover",
"background-position": "center",
display: "block",
});
el.hide();
});

$(".mega-menu-container").css("display", "none");
$(".header-search").click(function () {
$ (".search-full").addClass("open");
});
$(".close-search").click(function () {
$(" .search-full").removeClass("open");
$("body").removeClass("offcanvas");
});
$(".mobile-toggle ").click(function () {
$(".nav-menus").toggleClass("open");
});
$(".mobile-toggle-left ").click(function () {
$(".left-header").toggleClass("open");
});
$(".bookmark-search") .click(function () {
$(".form-control-search").toggleClass("open");
});
$(".filter-toggle") .click(function () {
$(".product-sidebar").toggleClass("open");
});
$(".toggle-data").click (function () {
$(".product-wrapper").toggleClass("sidebaron");
});
$(".form-control-search input"). keyup(function (e) {
if (e.target.value) {
$(".page-wrapper").addClass("offcanvas-bookmark");
} else {
$(".page-wrapper").removeClass("offcanvas-bookmark");
 });
$(".search-full input"). keyup(function (e) {
console.log(e.target.value);
if (e.target.value) {
$("body").addClass("offcanvas ");
} else {
$("body").removeClass("offcanvas");
 });

$( "body").keydown(function (e) {
if (e.keyCode == 27) {
$(".search-full input").val("");
$(".form-control-search input").val("");
$(".page-wrapper").removeClass("offcanvas-bookmark");
$(" .search-full").removeClass("open");
$(".search-form .form-control-search").removeClass("open");
$("body" ).removeClass("offcanvas");
 });
$(".mode").on("click", function () {
const bodyModeDark = $("body").hasClass("только для темных");

if (!bodyModeDark) {
$(".mode").addClass("active");< br /> localStorage.setItem("mode-cuba", "только тёмный");
$("body").addClass("только тёмный");
$("body") .removeClass("light");
 if (bodyModeDark) {
$(".mode").removeClass("active");
localStorage.setItem(" mode-cuba", "light");
$("body").removeClass("только для темных");
$("body").addClass("light");
 });
$("body").addClass(
localStorage.getItem("mode-cuba")
? localStorage.getItem("mode-cuba")
: "light"
);
$(".mode").addClass(
localStorage.getItem("mode-cuba) ") === "только для темных" ? "active" : " "
);

// фильтр боковой панели
$(".md-sidebar .md-sidebar -toggle ").on("click", function (e) {
$(".md-sidebar .md-sidebar-aside ").toggleClass("open");
});

$(".loader-wrapper").fadeOut("slow", function () {
$(this).remove();
});

$(window).on("scroll", function () {
if ($(this).scrollTop() > 600) {
$(".tap-top").fadeIn();
} else {
$(".tap-top").fadeOut();
 });

$(".tap-top").click(function () {
$("html, body").animate(
{
ScrollTop: 0,
},
600
);
return false;
});
(function ($, window, document, undefined) {
"use strict";
var $ripple = $(".js-ripple");
$ripple.on("click.ui.ripple" , функция (e) {
var $this = $(this);
var $offset = $this.parent().offset();
var $circle = $this.find (".c-ripple__circle");
var x = e.pageX - $offset.left;
var y = e.pageY - $offset.top;
$circle.css( {
вверху: y + "px",
слева: x + "px",
});
$this.addClass("is-active");
});
$ripple.on(
"animationend webkitAnimationEnd oanimationend MSAnimationEnd",
function (e) {
$(this).removeClass("is-active" );
 );
})(jQuery, window, document);

// активная ссылка

$(" .chat-menu-icons .toogle-bar").click(function () {
$(".chat-menu").toggleClass("show");
});

// Язык
var tnum = "en";

$(document).ready(function () {
if (localStorage.getItem("primary ") != null) {
var Primary_val = localStorage.getItem("primary");
$("#ColorPicker1").val(primary_val);
var Secondary_val = localStorage.getItem ("вторичный");
$("#ColorPicker2").val(вторичный_val);

$(document).click(function (e) {
$(".translate_wrapper, .more_lang").removeClass("active");
});
$(".translate_wrapper .current_lang").click(function (e) {
e.stopPropagation();
$(this).parent().toggleClass("active");

setTimeout(function () {
$(". more_lang").toggleClass("active");
}, 5);
});

/*TRANSLATE*/
Translate(tnum);< br />
$(".more_lang .lang").click(function () {
$(this).addClass("selected").siblings().removeClass("selected");
$(".more_lang").removeClass("active");

var i = $(this).find("i").attr("class");< br /> var lang = $(this).attr("значение-данных");
var tnum = lang;
Translate(tnum);

$(". current_lang .lang-txt").text(lang);
$(".current_lang i").attr("class", i);
});
});< br />
function Translate(tnum) {
$(".lan-1").text(trans[0][tnum]);
$(".lan-2" ).text(trans[1][tnum]);
$(".lan-3").text(trans[2][tnum]);
$(".lan-4" ).text(trans[3][tnum]);
$(".lan-5").text(trans[4][tnum]);
$(".lan-6" ).text(trans[5][tnum]);
$(".lan-7").text(trans[6][tnum]);
$(".lan-8" ).text(trans[7][tnum]);
$(".lan-9").text(trans[8][tnum]);
}

var trans = [
{
en: "General",
pt: "Geral",
es: "Generalo",
fr: "Génà ©rale",
de: "Generel",
cn: "一般",
ae: "ØØ¬Ù†Ø±Ø§Ù„ Ù„ÙˆØ§Ø ¡",
},
{
en: "Панели мониторинга, виджеты и макет.",
pt: "Панели, виджеты и макет.",
es: "Панели, окна и окна.",
fr: "Таблицы границ, виджеты и размещение на странице.",
de: "Панели мониторинга, виджеты в макете.",
cn: "仪表æ¿ï¼Œå°å·¥å…·å'Œå¸ƒå±€ã€‚",
ae: "Ù„ÙˆØØ§Øª المع٠„ومات والأدوات والتخطيط.",
},
{
ru: "Панели мониторинга" ,
pt: "Painéis",
es: "Paneloj",
fr: "Tableaux",
de: "Dashboards",
cn: " 仪表æ¿",
ae: "ÙˆØØ§Øª القيادة ",
},
{
en: «По умолчанию»,
pt: «Стандарт»,
es: «Vaikimisi»,
fr: «Défaut»,
de: «Standaard»,
cn: "é›»å商務",
ae: "ÙˆØ¥ÙØªØ±Ø§Ø¶ÙŠ",
},
{
en : " Электронная коммерция",
pt: "Электронная коммерция",
es: "Komerco",
fr: "Commerce électronique",
de: " Электронная коммерция",< br /> cn: "é›»å商務",
ae: "والت0¬Ø§Ø±Ø© الإل كترونية ",
},
{
en: "Виджеты",
pt: "Инструмент",
es: "Видин",< br /> fr: " Виджеты",
de: "Виджеты",
cn: "å°éƒ¨ä»¶",
ae: "ÙˆØ§Ù„ØØ§Ø¬ يات",< br /> },
{
en: "Макет страницы",
pt: "Макет страницы",
es: "PaÄa aranÄo ",
fr: " Tableaux",
de: "Mise en page",
cn: "é é¢ä½ˆå±€",
ae: "وتخط يط Ø§Ù„ØµÙØØ©" ,
},
{
en: "Приложения",
pt: "Формы",
es: " Aplikoy",
fr: "Приложения ",
de: "Toepassingen",
cn: "æ‡‰ç”¨é ˜åŸŸ",
ae: "وا لتطبيقات ",
},
{
en: «Готовые к использованию приложений»,
en: «Готовые к использованию приложений»,
es: «Приложения Preta uzi» ,
fr: "Приложения готовы к использованию",
de: "Пожалуйста, используйте приложения",
cn: "ä»ªè¡ ¨æ¿",
ae: "جاهز لاستخدام التطبيقات",
},
];

$(".mobile-title svg").click(function () {
$(".header-mega").toggleClass(" d-block");
} );

$(".onhover-dropdown").on("click", function () {
$(this). Children(".onhover-show-div") .toggleClass("active");
});

$("#flip-btn").click(function () {
$(".flip-card -inner").addClass("flipped");
});

$("#flip-back").click( function () {
$(" .flip-card-inner").removeClass("flipped");
});
})(jQuery);

< br />вот именно здесь:

Код: Выделить всё

$("body").keydown(function (e) {
if (e.keyCode == 27) {
$(".search-full input").val("");
$(".form-control-search input").val("");
$(".page-wrapper").removeClass("offcanvas-bookmark");
$(".search-full").removeClass("open");
$(".search-form .form-control-search").removeClass("open");
$("body").removeClass("offcanvas");
}
i dont have any use of keycode in my sale function , i dont know even why its referencing to this ,
can someone have an idea , thank you very much
I tried to search a reference between script.js and my two function but no hope , i tried to change that block of code in js like this to check for keycode :

Код: Выделить всё

$("body").keydown(function (e) {
if (e && e.keyCode == 27) {
$(".search-full input").val("");
$(".form-control-search input").val("");
$(".page-wrapper").removeClass("offcanvas-bookmark");
$(".search-full").removeClass("open");
$(".search-form .form-control-search").removeClass("open");
$("body").removeClass("offcanvas");
}
});
it goes from keycode error to undefined 'type'


Источник: https://stackoverflow.com/questions/781 ... ng-keycode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»