Javascript.RU

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

Скрипт срабатывает два раза
Bootstrap, форма, валидация плагином formvalidation.io, отправка с помощью ajax. При нажатии на кнопку в функцию обработки кнопки почему-то заходит два раза, соответственно файл скрипта отправки на почту send.php также вызывается 2 раза, приходит два письма. В чем проблема? Прошу помочь советом, с js столкнулся первый раз. Первая функция - валидация полей формы, убирая ее - приходит одно письмо... Заранее спасибо...
<form id="defaultForm">
        <!-- Поля формы -->
        <div class="form-group">                    
               <button type="submit" class="btn btn-primary">Отправить</button>
        </div>
    <div id="alertContainer" class="alert" style="display: none;"></div>
</form>

$(document).ready(function() {
 
        $('#defaultForm')
        .bootstrapValidator({
            message: 'Ввод некорректен',
            feedbackIcons: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                //Список полей с правилами заполнения
            }
        });
        
    });
 
    $(function(){
        $('#defaultForm')
        .submit(function(e){        
            e.preventDefault();
            var formValidation = $('#defaultForm').data('bootstrapValidator');
            if (formValidation.isValid()) {
                var form_data=$(this).serialize();
                $.ajax({
                    type: "POST", 
                    url: "send.php", 
                    data: form_data,
                    success: function() {
                        $('#alertContainer')
                            .removeClass('alert-warning')
                            .addClass('alert-success')
                            .html('Ваше сообщение было успешно отправлено')
                            .show();
                    }
                });                 
            }
            else {
                formValidation.validate();
            }           
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2015, 07:30
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Потому что отправку формы нужно делать в коллбеке валидации.
http://formvalidation.io/examples/ajax-submit/ здесь пример даже есть

Последний раз редактировалось krasovsky, 16.09.2015 в 07:34.
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2015, 08:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Заменить тип кнопки:
Цитата:
<form id="defaultForm">
<!-- Поля формы -->
<div class="form-group">
<button type="button" class="btn btn-primary">Отправить</button>
</div>
<div id="alertContainer" class="alert" style="display: none;"></div>
</form>
Вместо:
$('#defaultForm').submit(function(e){
e.preventDefault();

Прописать:
$('#defaultForm .btn btn-primary').click(function(){
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2015, 09:17
Новичок на форуме
Отправить личное сообщение для AlphaSpec Посмотреть профиль Найти все сообщения от AlphaSpec
 
Регистрация: 16.09.2015
Сообщений: 3

Сообщение от Deff Посмотреть сообщение
Заменить тип кнопки:


Вместо:
$('#defaultForm').submit(function(e){
e.preventDefault();

Прописать:
$('#defaultForm .btn btn-primary').click(function(){
Не работает...

Сообщение от krasovsky Посмотреть сообщение
Потому что отправку формы нужно делать в коллбеке валидации.
http://formvalidation.io/examples/ajax-submit/ здесь пример даже есть
Кроме того, на этой странице есть именно информация по двойной отправке формы, поменял скрипт по аналогии с примером на этой странице
$(document).ready(function() {
		$('#bt').on('click', function() {
			$('#defaultForm')
				.formValidation('destroy')
				.formValidation({
				})
				.on('success.form.fv', function(e) {
					e.preventDefault();
					$.ajax({
						type: "POST", 
						url: "send.php", 
						data: "data",
						success: function() {
							$('#alertContainer')
								.removeClass('alert-warning')
								.addClass('alert-success')
								.html('Ваше сообщение было успешно отправлено')
								.show();
						}
					});	
				});
		});
	});

кнопке присвоил id="bt", смотрю в хроме в отладке - не входит в это событие совсем .on('success.form.fv', function(e), соответственно и не отправляет ничего... запутался уже
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2015, 15:37
Новичок на форуме
Отправить личное сообщение для AlphaSpec Посмотреть профиль Найти все сообщения от AlphaSpec
 
Регистрация: 16.09.2015
Сообщений: 3

Ап
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт срабатывает после перезагрузки страницы weare138 Events/DOM/Window 4 10.11.2014 16:46
На webkit скрипт срабатывает не так как надо MadChild Общие вопросы Javascript 7 06.05.2014 14:51
2 компьютера 1 хром и 1 скрипт Megatron13 Opera, Safari и др. 1 21.07.2013 19:12
Не срабатывает скрипт в Windows sidebar includer-test Internet Explorer 1 29.05.2013 12:32
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40