Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.09.2016, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,120

Сообщение от sergofedor06
я ее убрал, как с ней так и без толку нет
... а поставить код внизу страницы и не мудрить?
Ответить с цитированием
  #12 (permalink)  
Старый 21.09.2016, 21:27
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

sergofedor06,
в квериСелектор пихай селектор как есть! С точечкой
Ответить с цитированием
  #13 (permalink)  
Старый 21.09.2016, 22:55
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

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

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



$(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 символа");
        }
    });
});
Ответить с цитированием
  #14 (permalink)  
Старый 22.09.2016, 10:45
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

Помогите пожалуйста сделать правку в этом скрипте чтобы не срабатывала кнопка после первого нажатия
Ответить с цитированием
  #15 (permalink)  
Старый 22.09.2016, 11:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,120

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");
Ответить с цитированием
  #16 (permalink)  
Старый 22.09.2016, 11:13
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

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

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

var user_name = $("#comments_add_form #user_name");
Ответить с цитированием
  #17 (permalink)  
Старый 22.09.2016, 11:16
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

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);
		//...
    });
Ответить с цитированием
  #18 (permalink)  
Старый 22.09.2016, 11:21
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

рони
к сожалению не выходит, еще до заполнения формы комментария я жму на кнопку добавить комментарий
идет перенаправление, должна срабатывать проверка (поля не заполнены и тд....)
Ответить с цитированием
  #19 (permalink)  
Старый 22.09.2016, 11:30
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

рони


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



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");


терь нет переадресации, но при многократном нажатии всеровно проскакивают дубли в бд
Ответить с цитированием
  #20 (permalink)  
Старый 22.09.2016, 11:49
Кандидат Javascript-наук
Отправить личное сообщение для sergofedor06 Посмотреть профиль Найти все сообщения от sergofedor06
 
Регистрация: 10.11.2015
Сообщений: 131

[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);
		//...
    });

//ДОБАВИЛА





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

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка для нажатия кнопки hidden liringea Элементы интерфейса 7 09.08.2013 18:38
Как вернуться к месту нажатия ссылки после скроллинга? galva74 jQuery 2 02.05.2012 10:41
Имитация нажатия кнопки ehan jQuery 9 14.12.2011 14:07
Событие hover только после 2 секунд niksan jQuery 7 12.08.2010 14:16
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 12:23