Jquery глобальный щелчок и отправка перехвата не работает - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть функция обнаружения файлов cookie, обнаруженная в другом вопросе, который я хочу реализовать.Я решил использовать глобальный перехватчик кликов, чтобы проверить, существует ли мой cookie, прежде чем продолжить действие.

$(document).on("submit", function (event) {
    event.preventDefault();
    var cookie = getCookie("cookieName");
    if (cookie == null) {
        alert("not exists");
    } else {
        alert("exists");
    }
    console.log(event);
    event.currentTarget.submit();
});

Проблема в том, что когда я отправляю его, я получаю предупреждение, а затем появляется эта ошибка:

event.currentTarget.submit не является функцией

Я попытался войти в консоль и увидел внутри себя событие формы.

Я не уверен, что мне не хватает.

1 Ответ

1 голос
/ 25 сентября 2019

Из документации Event.currentTarget :

Свойство currentTarget только для чтения интерфейса события определяет текущую цель для события, поскольку событие проходит черезDOM. Он всегда относится к элементу, к которому был прикреплен обработчик события, в отличие от Event.target, который идентифицирует элемент, на котором произошло событие ...

Inв вашем случае «элемент, к которому был прикреплен обработчик события» - document.Вы не хотите отправлять document (и вы не можете);Вы хотите отправить form.

Попробуйте event.target.submit(); вместо:

$(document).on("submit", function (event) {
    event.preventDefault();
    var cookie = getCookie("cookieName");
    if (cookie == null) {
        alert("not exists");
    } else {
        alert("exists");
    }
    event.target.submit();
});

$(document).on("submit", function(event) {
  event.preventDefault();
  console.log(`event.target: ${event.target.constructor.name}`);
  console.log(`event.currentTarget: ${event.currentTarget.constructor.name}`);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <button type="submit">Submit</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...