Я пробовал много раз и много искал, но это все равно не работает. Поэтому я надеюсь, что каждый сможет просветить меня.
У меня есть:
$.fn.logicTuoi_tinhTuoi = (e) => {
$('#tuoi').html($.fn.tinhTuoi())
if (!~$('#tuoi').text().indexOf('Lỗi')){
$.fn.fireWorks(e)
$('#tuoi').effect('fade')
}else $('#tuoi').effect('shake')
}
$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
$.fn.logicTuoi_tinhTuoi(e)
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
if (e.which == 13){
$.fn.logicTuoi_tinhTuoi(e)
}
})
Проблема в том, что я не могу получить событие из события щелчка #tinhtuoi, когда нажимаю клавишу Enter. Поэтому я не могу передать e из события onClick #tinhtuoi в функцию $.fn.logicTuoi_tinhTuoi(e).
Ссылка на изображение, если вы не можете просмотреть: https://ibb.co/vcqjsPC
Я действительно хочу иметь возможность получить событие, нажав эту кнопку, нажав клавишу Enter. Но я не знаю, как или есть ли лучший способ сделать это, пожалуйста, предложите мне. Будет оценен по достоинству. Большое спасибо. Событие клика — это кнопка.
Ссылка, если вы не можете просмотреть изображение: https://ibb.co/DM3HdXK Я хочу, чтобы я мог получить букву «e» из события щелчка и передать ее в событие нажатия клавиши. Но я не знаю, что делать?
Я использую cdn Anime.js 3.2.2, Jquery 3.7.1, Jquery ui 1.13.
@Code Spirit Мне очень жаль, что мой вопрос немного сбивает с толку. Поэтому я немного изменил его. Можете ли вы просмотреть изображения по ссылке в посте?
Фактическая проблема заключается в том, что вы хотите получить прослушиватель событий щелчка в обработчике нажатия клавиш, а не в том, что ваш код не работает. Почему ты хочешь это сделать? Очевидно, что событие Click Event не является событием нажатия клавиши. Если вы полагаетесь на данные события щелчка, есть и другие способы сделать это, но я все еще не знаю, что вы на самом деле хотите сделать.
@CodeSpirit Проблема в том, что когда я использую мышь, нажимаю эту кнопку, она удаляет 'e' $(this), и я могу сделать 'e.target.id' или в моей функции $.fn.fireWorks(e) есть используйте: pointerX = e.clientX || e.touches[0].clientX указательY = e.clientY || e.touches[0].clientY. Поэтому, когда я использую событие нажатия клавиши на другом объекте html, он не сможет получить букву «e», как когда я нажимаю мышью на эту кнопку. Если у вас есть другое решение, пожалуйста, дайте мне знать. Большое спасибо.
@CodeSpirit Возможно, я немного запутанно описал проблему. И мой примерный язык — вьетнамский. Если возможно, посетите giacmo.epizy.com/#MENU и вы увидите Калькулятор возраста кнопок v1.0. Когда я нажимаю мышь, анимация AnimeJS работает, но когда я использую клавишу Enter, ее не будет. могу получить букву «е», например, когда я использую мышь и нажимаю на кнопку. Ссылка на изображение: ibb.co/r7vVypT



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам следует провести рефакторинг функции фейерверка, чтобы принять позицию, а не событие. Тем не менее, при нажатии клавиши нет позиции мыши, поэтому вам нужно заранее получить ее при перемещении мыши, а затем передать ее при нажатии клавиши.
// Store pointer position on mousemove
const mousePositon = {x: 0, y: 0};
$(window).on("mousemove", (e) => {
Object.assign(mousePosition, {x: e.clientX, y: e.clientY});
});
$.fn.logicTuoi_tinhTuoi = (position) => {
$('#tuoi').html($.fn.tinhTuoi())
if (!~$('#tuoi').text().indexOf('Lỗi')){
$.fn.fireWorks(position)
$('#tuoi').effect('fade')
}else $('#tuoi').effect('shake')
};
$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
// OnClick pass click event mouse position
$.fn.logicTuoi_tinhTuoi({x: e.clientX, y: e.clientY})
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
if (e.which == 13){
// Pass last mouse position
$.fn.logicTuoi_tinhTuoi(mousePosition)
}
})
Почему Object.assign, а не просто mousePositon.x = e.clientX?
Вопрос стиля
Просто вызовите событие нажатия кнопки без параметра; $('#divTinhTuoi').click()
Javascript предоставит объект события кнопки обработчику событий.
В результате при нажатии клавиши Enter будет происходить так, как если бы кнопка была нажата.
$.fn.logicTuoi_tinhTuoi = (e) => {
$('#tuoi').html($.fn.tinhTuoi())
if (!~$('#tuoi').text().indexOf('Lỗi')){
$.fn.fireWorks(e)
$('#tuoi').effect('fade')
}else $('#tuoi').effect('shake')
}
$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
$.fn.logicTuoi_tinhTuoi(e)
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
if (e.which == 13){
// Javascript will provide the button's event object to the event handler
$('#divTinhTuoi').click()
}
})
Зачем вам нужно событие кнопки? Когда происходит нажатие клавиши, возможно, еще не было события щелчка на кнопке. Что вы пытаетесь достичь?