Я перепробовал весь код, который мог, и так и не понял, как это сделать, когда я нажимаю <i> или когда я нажимаю Enter, он работает. Мне действительно нужна помощь. Спасибо!
$('#update').click(function upd() {
loadChannel($('#chnlname').val());
});
var input = document.getElementById("chnlname");
input.addEventListener("keyup", function(event) {
if (event.keyCode === 13) {
loadChannel($('#chnlname').val());
}
});<html>
<head>
<link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<div class = "Search1">
<div class = "inputWithIcon">
<input type = "text" placeholder = "Channel ID" id = "chnlname" class = "Input2"></input>
<i class = "fa fa-search" aria-hidden = "true" id = "update" onclick = "upd()"></i>
</div>
</div>
</body>


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


1- добавьте свой js-код в метод готовности документа 2- не нужно указывать обработчик кликов в html-коде, достаточно $ ('# update'). Click.
полный код: https://codepen.io/peker-ercan/pen/xaemMr
js;
$(document).ready(function () {
$('#update').click(function upd() {
loadChannel($('#chnlname').val());
});
function loadChannel() {
console.info("loading channel");
}
var input = document.getElementById("chnlname");
input.addEventListener("keyup", function (event) {
if (event.keyCode === 13) {
loadChannel($('#chnlname').val());
}
});
});
html:
<div class = "Search1">
<div class = "inputWithIcon">
<input type = "text" placeholder = "Channel ID" id = "chnlname" class = "Input2"></input>
<i class = "fa fa-search" aria-hidden = "true" id = "update"></i>
</div>
</div>
@MtnBros Я написал имитацию метода loadChannel, который печатает «канал загрузки», чтобы я мог проверить, работает ли он. Я думал, у вас есть реализация этого метода в вашем коде.
Я разместил свой код не в том месте, что означает, что он не работает. Большое спасибо за Вашу помощь!
1) Убедитесь, что ваша функция щелчка определена и доступна при загрузке DOM. Похоже, ваша функция upd(){} недоступна в глобальном контексте. Хотя это не соответствует лучшим практикам, вы можете сделать это, привязав функцию щелчка к объекту окна.
См. Скрипку: https://jsfiddle.net/js03rq2b/42/
2) Вы вызвали upd(){} в HTML через onclick = "upd()", одновременно пытаясь добавить прослушиватель событий в JavaScript. Используйте один из этих методов, но не оба.
3) Кроме того, если вы привяжете обработчик кликов к тегу <button> вместо тега <i>, он также ответит на пробел и клавишу ВВОД. По возможности используйте поведение браузера по умолчанию, используя семантическую разметку.
Надеюсь, это поможет.
Клавиша Enter по-прежнему не работает. Однако в консоли у него был «канал загрузки», я считаю, что он почему-то не загружает текст в поле.