#javascript #jquery
#javascript #jquery
Вопрос:
Я пытаюсь установить кнопку, которая позволяет избежать одновременного нажатия пользователем нескольких раз. Я пытался
Способ 1:
$(document).one('click','.button',function(){
//coding......
});
Способ 2:
$(document).on('click','.button',function(){
$(this).prop('disabled',true);
//coding....
$(this).prop('disabled',false);
});
В методе 1 возможно ли сбросить функцию ‘.one’?
Потому что я разрешаю пользователю щелкнуть еще раз, если часть ‘// coding’
возвращает false .
Или, может быть, есть другой вариант?
Комментарии:
1. Вам придется явно отключить обработчик (или свойство), если вы хотите только условно отключить его.
2. в чем проблема со вторым методом?
//coding
представлять означает, что такое вызов ajax или простой dom?3. @prasanth ‘// coding’ содержит некоторую проверку ошибок и ajax
4. Для такого сценария я всегда рекомендую отказаться от функции
5. @hackape спасибо, я попробую это
Ответ №1:
Трудно сказать, не вдаваясь в подробности варианта использования. Этот фрагмент является лишь примером асинхронного действия (издевается с помощью setTimeout). Это просто переключает свойство disabled. Вы также можете добавлять / удалять прослушиватели событий, если это необходимо.
const button1 = document.getElementById('button')
const onClick = e => {
button1.disabled = true
setTimeout(() => {
const x = Math.round(Math.random())
if (x) {
button.disabled = false
} else {
const button2 = document.createElement('button')
button2.textContent = 'Reset'
button2.onclick = e => {
button1.disabled = false
button2.remove()
}
document.body.appendChild(button2)
}
}, 1000)
}
button1.addEventListener('click', onClick)
<button id='button'>Click</button>
Ответ №2:
Вы должны проверить, отключена ли кнопка или нет. Если это не так, установите для нее значение отключено и выполните свой код.
$(document).on('click','.button',function(){
if ($(this).prop('disabled') === false) {
$(this).prop('disabled',true);
//put your code here
}
});