Добавление элементов в список приложений с помощью клавиши ввода приводило к сбоям в работе других функций.Jquery

Программирование на jquery
Ответить
Anonymous
 Добавление элементов в список приложений с помощью клавиши ввода приводило к сбоям в работе других функций.

Сообщение Anonymous »

Приложение «Список» работает отлично, пока я не добавлю нажатие клавиши ввода. Я могу заставить его работать, только если он находится за пределами функции newItem(). Когда у меня есть функция keydown внутри функции newItem(), поле ввода просто очищается, и я не получаю никаких ошибок, но ничего не отправляется.
Моя проблема заключается в том, что когда Я поместил функцию keydown вне функции newItem(), функция CrossOutButton(), CSS-забастовки и sortable() не работают, потому что теперь они находятся за пределами области действия. . Я предполагаю, что есть решение, где все это можно разместить внутри функции newItem(), но я застрял.

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

function newItem() {

//Adds new item to the list
let li = $('[*]');
let inputValue = $('#input').val();
li.append(inputValue);

if (inputValue === '') {
alert('You must write something');
} else {
$('#list').append(li);
//clears input field after selecting 'Add' button
$('#input').val('');
}

//Crossing out an item from the list of items
function crossOut() {
li.toggleClass('strike');
}

li.on('dblclick', function crossOut() {
li.toggleClass('strike');
});

//Adding the delete button 'X'
let crossOutButton = $('');
crossOutButton.append(document.createTextNode('X'));
li.append(crossOutButton);

crossOutButton.on('click', deleteListItem);
//Adding class delete (display: none) from css
function deleteListItem() {
li.addClass('delete');
}

//reordering the items
$('#list').sortable();

}

//keydown function to listen for enter key
$(document).ready(function() {
$('#input').keydown(function(e) {

//initialized variable and set as undefined
let inputValue;

if (inputValue === '') {
alert("You must enter something");
} else {
//Enter key holds the value of 13
if (e.keyCode === 13) {
let li = `[*]${$(this).val()}`;
$('#list').append(li);
console.log('Form submitted');

e.preventDefault();
//clears input field after hitting enter
$('#input').val('');
}
}
})
});

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





Add

[list][/list]



Подробнее здесь: https://stackoverflow.com/questions/783 ... t-work-pro
Ответить

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

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

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

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

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