Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Блокирование кнопки на 10 секунд после нажатия (https://javascript.ru/forum/css-html/65042-blokirovanie-knopki-na-10-sekund-posle-nazhatiya.html)

рони 21.09.2016 20:13

Цитата:

Сообщение от sergofedor06
я ее убрал, как с ней так и без толку нет

... а поставить код внизу страницы и не мудрить?

Coriolan161 21.09.2016 21:27

sergofedor06,
в квериСелектор пихай селектор как есть! С точечкой

sergofedor06 21.09.2016 22:55

как не пробовал вставлять скрипт так ничего и не вышло, все ровно при многократном нажатии на кнопку добавить комментарий закидывает комментарий столько раз сколько нажал на кнопку!

вот весь мой скрипт на аяксе



$(document).ready(function () {
    function AjaxRefresh(url, page_anchor, form_id) {
        var url = url;
        var page_anchor = page_anchor;
        jQuery.ajax({
            url: url, //Адрес подгружаемой страницы
            type: "POST", //Тип запроса
            data: {comments_get_all: 1, anchorFromAjax: page_anchor},
            success: function (response) { //Если все нормально
                $('#comments_field').html(response);
                $("#"+form_id+" input[type='text'], textarea").val("");
                $("#"+form_id+" #result").fadeIn(400,
                    function(){
                        $('this')
                            .css('display', 'block')
                            .animate({opacity: 1, top: '50%'}, 200)
                    });
                document.images.cryptogram.src='captcha/cryptographp.php?cfg=0&&'+Math.round(Math.random(0)*1000)+1;    // указать путь до файла!
            },
            error: function (response) { //Если ошибка
                alert(response);
            }
        });
    }

    function AjaxFormRequest(form_id, url, page_anchor) {
        var form_id = form_id;
        var url = url;
        var page_anchor = page_anchor;
        jQuery.ajax({
            url: url, //Адрес подгружаемой страницы
            type: "POST", //Тип запроса
            dataType: "html", //Тип данных
            data: jQuery("#" + form_id).serialize(),
            success: function (response) { //Если все нормально
                if (response == '0') {
                    alert('есть ссылки в коментарии');
                } else {
                    AjaxRefresh(url, page_anchor, form_id);
                }
            },
            error: function (response) { //Если ошибка
                alert(response);
            }
        });
    }

    function AjaxWordsCheck(url, str) {
        var url = url;
        var str = str;
        jQuery.ajax({
            url: url, //Адрес подгружаемой страницы
            type: "POST", //Тип запроса
            data: {words: str},
            dataType: "html",
            success: function (response) { //Если все нормально
                return response;
            },
            error: function (response) { //Если ошибка
                return false;
            }
        });
    }

    function AjaxCapchaCheck(url, capcha, anchor, form_id) {
        var url = url;
        var capcha = capcha;
        var page_anchor = anchor;
        var form_id = form_id;
        jQuery.ajax({
            url: url, //Адрес подгружаемой страницы
            type: "POST", //Тип запроса
            data: {capcha: capcha},
            success: function (response) { //Если все нормально
                if (response == '1') {
                    AjaxFormRequest(form_id, url, page_anchor);
                } else {
                    alert('ошибка защитного кода');
                    document.images.cryptogram.src='captcha/cryptographp.php?cfg=0&&'+Math.round(Math.random(0)*1000)+1;    // указать путь до файла!
                    return false;
                }
            },
            error: function (response) { //Если ошибка
                alert(response);
            }
        });
    }

    $('body').on('click', "#comments_add_form input[type='submit']", function (e) {
        e.preventDefault();
        var user_name = $("#comments_add_form  #user_name");
        if (user_name.val().length >= 3) {
            var comment_text = $("#comments_add_form  #comment_text");
            if (comment_text.val().length >= 30) {
                var capcha = $("#comments_add_form #capcha");
                var anchor = $("#comments_add_form  #anchor").val();
                if (user_name.val() == "") {
                    alert("введите имя");
                } else if (comment_text.val() == "") {
                    alert("введите коментарий")
                } else {
                    AjaxCapchaCheck('comments.func.php', capcha.val(), anchor, 'comments_add_form');    // указать путь до файла!
                }
            } else {
                alert("минимум 30 символов");
            }
        } else {
            alert("минимум 3 символа");
        }
    });
});

sergofedor06 22.09.2016 10:45

Помогите пожалуйста сделать правку в этом скрипте чтобы не срабатывала кнопка после первого нажатия

рони 22.09.2016 11:00

sergofedor06,
var flag;
    $('body').on('click', "#comments_add_form input[type='submit']", function (e) {
        e.preventDefault();
        var el = this;
        if(flag)return;
        else {flag = true;
el.setAttribute('disabled', 'disabled');
window.setTimeout(function() {
    el.removeAttribute('disabled');
    flag = false;
}, 10000)};
        var user_name = $("#comments_add_form  #user_name");

sergofedor06 22.09.2016 11:13

Спасибо рони
я так понимаю что ваш скрипт мне нужно добавить в мой скрипт

перед этой строкой

var user_name = $("#comments_add_form #user_name");

Manyasha 22.09.2016 11:16

sergofedor06,
может так получится?
function AjaxCapchaCheck(url, capcha, anchor, form_id) {
        var url = url;
        var capcha = capcha;
        var page_anchor = anchor;
        var form_id = form_id;
        jQuery.ajax({
            url: url, //Адрес подгружаемой страницы
            type: "POST", //Тип запроса
            data: {capcha: capcha},
            success: function (response) { //Если все нормально
                if (response == '1') {
                    AjaxFormRequest(form_id, url, page_anchor);
                } else {
                    alert('ошибка защитного кода');
                    document.images.cryptogram.src='captcha/cryptographp.php?cfg=0&&'+Math.round(Math.random(0)*1000)+1;    // указать путь до файла!
                    return false;
                }
				//ДОБАВИЛА
				$('.add_comment').prop('disabled', false);
            },
            error: function (response) { //Если ошибка
                alert(response);
				//ДОБАВИЛА
				$('.add_comment').prop('disabled', false);
            }
        });
    }

    $('body').on('click', "#comments_add_form input[type='submit']", function (e) {
        e.preventDefault();
		$('.add_comment').prop('disabled', true);
		//...
    });

sergofedor06 22.09.2016 11:21

рони
к сожалению не выходит, еще до заполнения формы комментария я жму на кнопку добавить комментарий
идет перенаправление, должна срабатывать проверка (поля не заполнены и тд....)

sergofedor06 22.09.2016 11:30

рони


сделал так с кодом



var flag;



$('body').on('click', "#comments_add_form input[type='submit']", function (e) {
e.preventDefault();




var el = this;
if(flag)return;
else {flag = true;
el.setAttribute('disabled', 'disabled');
window.setTimeout(function() {
el.removeAttribute('disabled');
flag = false;
}, 10000)};



var user_name = $("#comments_add_form #user_name");


терь нет переадресации, но при многократном нажатии всеровно проскакивают дубли в бд

sergofedor06 22.09.2016 11:49

[quote=Manyasha;429437]sergofedor06,
может так получится?
//ДОБАВИЛА
				$('.add_comment').prop('disabled', false);
            },
            error: function (response) { //Если ошибка
                alert(response);
				
				$('.add_comment').prop('disabled', false);
            }
        });
    }

    $('body').on('click', "#comments_add_form input[type='submit']", function (e) {
        e.preventDefault();
		$('.add_comment').prop('disabled', true);
		//...
    });

//ДОБАВИЛА





Ваш способ вроде как блокирует кнопку после отправки комментария
но есть проблемы он работает в том случае если человек
верно заполнил поля

имя
текст комментария
и каптчу

и нажал отправить комментарий, тогда все норм!

но если человек не верно заполнил хотя бы одно поле то при нажатии на добавить комментарий ему уже не всплывают подсказки где он сделал ошибки, так как бутон работает только одно нажатие и все, блок, еслибы ваш скрипт срабатывал только после того как пользователь верно введет данные во все поля!
а если он вводит не верно то все ровно не может отправить у меня блокировка стоит! на длину, ссылка в тексте.


Часовой пояс GMT +3, время: 09:22.