JavaScript
12
Вклад в тег
<input type="password" name="password" autocomplete="new-password">
<?php echo in_array($key, $params['proizvoditel'] ? $params['proizvoditel'] : array()) ? 'checked' : ''; ?>
<form action="" method="get">
<?php foreach ($brands as $key => $value) : ?>
<input type="checkbox" name="brands[]" value="<?php echo $key; ?>" <?php echo in_array($key, $brand_sort ? $brand_sort : array()) ? 'checked' : ''; ?>> <?php echo $value; ?><br>
<?php endforeach; ?>
<input type="submit" value="Показать">
</form>
<button class="progress-button" data-uri="https://toster.ru/q/311167?e=3769167#comment_1058109" data-target="_blank">Как сделать задержку на открытие ссылки?</button>
<button class="progress-button" data-uri="http://yandex.ru" data-target="_self">Еще одна кнопка...</button>
$(document).ready(function() {
$(function() {
var flag = new Boolean(true); // Защитит от частого нажатия на кнопку
// Клик
$('.progress-button').click(function(e) {
openUrl($(this));
e.preventDefault();
})
/**
* Открывает ссылку с задержкой
*
* @param {object} button - Нажатая кнопка
* @return {boolean}
*/
function openUrl(button) {
var delay = 2000, // Задержка 2 секунды
text = button.text(), // Текст который будет задан кнопке после окончания загрузки
uri = button.attr('data-uri'); // URL
// Проверяем не начата ли загрузка какой-либо ссылки
if (flag == true) {
flag = false;
// Показываем загрузку
button.text('загружаю...');
// С задержкой открываем URL, возвращая штатный текст кнопке, разрешаем открывать новые ссылки
setTimeout(function() {
flag = true;
button.text(text);
// Проверяем открыть ссылку в новом окне или в текущем
if (button.attr('data-target') === '_blank') {
window.open(uri);
return;
}
window.location = uri;
return;
}, delay);
}
return;
}
});
});
.activeButton {
background-color: yellow;