Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2018, 12:12
Аспирант
Отправить личное сообщение для Menshakovich Посмотреть профиль Найти все сообщения от Menshakovich
 
Регистрация: 11.06.2018
Сообщений: 31

Кнопка не срабатывает второй раз
Добрый день!Подскажите,пожалуйста .почему при повторном нажатии на кнопку ничего не происходит?При первом все ок.
$(document).ready (function () {
        $("#form").submit ( function (event) {
            event.preventDefault();
             var dd   = $('#form').serialize();
            $.ajax ({
                url: "test.php",
                type:"POST",
                    data: dd,
                dataType:"html",
                beforeSend:funcBefore,
                success:funcSuccess,
                error:  function(xhr, str){
        alert('Возникла ошибка: ' + xhr.responseCode);
          }
            });
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2018, 12:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

И где здесь кнопка? Если речь о кнопке отправления формы и она не отправляется повторно, значит форма заменяется и ранее установленный обработчик ее не касается. То же самое будет и с кнопкой.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2018, 12:50
Аспирант
Отправить личное сообщение для Menshakovich Посмотреть профиль Найти все сообщения от Menshakovich
 
Регистрация: 11.06.2018
Сообщений: 31

Сообщение от laimas Посмотреть сообщение
И где здесь кнопка? Если речь о кнопке отправления формы и она не отправляется повторно, значит форма заменяется и ранее установленный обработчик ее не касается. То же самое будет и с кнопкой.
<form id="form"   action="" method="POST">
.......
<button type="submit"  name="submit">search</button>
</form>


простите,я не понял совсем. данные-то не меняются.и страница не перегружается
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2018, 13:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Menshakovich
я не понял совсем. данные-то не меняются
$(document).ready (function () {
        $("#form").submit ( function (event) {


это установка обработчика отправления формы при загрузке страницы. Если после асинхронного запроса было обновление на странице, которое также затрагивает эту форму, то это уже другая форма и $("#form").submit ... к ней уже не относится, а значит и последующего отправления не будет.

Код надо показывать чего вы на странице вытворяете вот тут funcSuccess, а приведенный код не является причиной вашей проблемы.
Ответить с цитированием
  #5 (permalink)  
Старый 05.08.2018, 14:02
Аспирант
Отправить личное сообщение для Menshakovich Посмотреть профиль Найти все сообщения от Menshakovich
 
Регистрация: 11.06.2018
Сообщений: 31

Сообщение от laimas Посмотреть сообщение
$(document).ready (function () {
        $("#form").submit ( function (event) {


это установка обработчика отправления формы при загрузке страницы. Если после асинхронного запроса было обновление на странице, которое также затрагивает эту форму, то это уже другая форма и $("#form").submit ... к ней уже не относится, а значит и последующего отправления не будет.

Код надо показывать чего вы на странице вытворяете вот тут funcSuccess, а приведенный код не является причиной вашей проблемы.
вот
function funcBefore()
	{
		$("#info").text ("Поиск...");
		
		
	}
	
	function funcSuccess (data)
	{
		$("#info").html(data);
		
	}

info-название div
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2018, 14:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

У div нет названия, это идентификатор. )
То что вы показываете не дает ни какого представления что у вас творится на странице.
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2018, 14:48
Аспирант
Отправить личное сообщение для Menshakovich Посмотреть профиль Найти все сообщения от Menshakovich
 
Регистрация: 11.06.2018
Сообщений: 31

Сообщение от laimas Посмотреть сообщение
У div нет названия, это идентификатор. )
То что вы показываете не дает ни какого представления что у вас творится на странице.
надо весь код страницы скинуть?
Ответить с цитированием
  #8 (permalink)  
Старый 05.08.2018, 15:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Menshakovich
надо весь код страницы скинуть?
Упаси господь, нужно проблемную часть. Одна из причин вашей проблемы мной описана, то есть у вас по идее происходит похожее:

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $('button').click(function() {
        alert('Ok');
        $('div').html('<button>GO</button>')
    });
});
</script>
</head>
<body>
<div>
<button>GO</button>
</div>
</body>
</html>


Здесь кнопка сработает один раз. Почему? Зная это не сложно обнаружить у себя эту проблему, причину.
А вот так можно "вылечить":

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $('div').on('click', 'button', function() {
        alert('Ok');
        $('div').html('<button>GO</button>')
    });
});
</script>
</head>
<body>
<div>
<button>GO</button>
</div>
</body>
</html>


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

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

Последний раз редактировалось laimas, 05.08.2018 в 17:46.
Ответить с цитированием
  #9 (permalink)  
Старый 05.08.2018, 19:42
Аспирант
Отправить личное сообщение для Menshakovich Посмотреть профиль Найти все сообщения от Menshakovich
 
Регистрация: 11.06.2018
Сообщений: 31



других скриптов пока нет. смотрите,я убрал фунцию event.preventDefault(); и вставил return false; после этого кнопка стала работать,но при нажатии перезагружается страница и данные формы стираются. то есть, ошибка где-то рядом. ...
Ответить с цитированием
  #10 (permalink)  
Старый 05.08.2018, 20:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Menshakovich
я убрал фунцию event.preventDefault(); и вставил return false;
Без разницы

$("#form").submit ( function (event) {
            event.preventDefault(); //отмена действия по умолчанию, то есть отправления формы
   //что можно заменить на return false;, но в конце 
             var dd   = $(this).serialize(); //не зачем напрягать поиском id=form, когда она уже доступна - this


Это всего лишь. Возможные причины я описал, что у вас там на самом деле не знаю. Можно не вываливать портянки кода на форуме, а дать ссылку на страницу, посмотрят.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery ui-slider & Jquery selectbox, Слайдер срабатывает всего 1 раз Micher jQuery 4 31.01.2014 13:07
почему onclick срабатывает один раз neWjs Events/DOM/Window 34 08.07.2012 01:15
ajax запрос срабатывает только один раз из цикла.. SunYang AJAX и COMET 3 30.10.2011 16:01
не срабатывает на второй раз ajax[отправка формы] vovs jQuery 5 21.09.2010 12:12
Не выполнять ф-цию второй раз, пока она не проработает до конца. peter888 Элементы интерфейса 2 04.04.2010 13:04