jquery-steps: отключить кнопку отправки при отправке формы

Я использую jquery-steps.js,

Я хочу отключить кнопку отправки, когда кто-то нажимает кнопку отправки, и никогда не активировать ее, пока форма не будет отправлена.

Причина в том, что если кто-то нажимает кнопку «Отправить» много раз, я получаю много писем!

Примечание. В моем файле HTML нет кнопки отправки, она отображается только из файла js, который я включаю ниже.

и мой файл js выглядит так.

$(function() {
    $("#smart-form").steps( {
        bodyTag:"fieldset", headerTag:"h2", bodyTag:"fieldset", transitionEffect:"slideLeft", titleTemplate:"<span class='number'>#index#</span> #title#", labels: {
            finish: "Send søknad", next: "Neste", previous: "Tilbake", loading: "Laster..."
        }
        , onStepChanging:function(event, currentIndex, newIndex) {
            if(currentIndex>newIndex) {
                return true;
            }
            var form=$(this);
            if(currentIndex<newIndex) {}
            return form.valid();
        }
        , onStepChanged:function(event, currentIndex, priorIndex) {}
        , onFinishing:function(event, currentIndex) {
            var form=$(this);
            form.validate().settings.ignore=":disabled";
            return form.valid();
        }
        , onFinished:function(event, currentIndex) {
            var form=$(this);
            $(form).ajaxSubmit( {
                target:'.result', beforeSubmit:function() {}
                , error:function() {}
                , success:function() {
                    $('.alert-success').show().delay(7000).fadeOut();
                    $('.field').removeClass("state-error, state-success");
                    if($('.alert-error').length==0) {
                        $('#smart-form').resetForm();
                        reloadCaptcha();
                    }
                }
            }
            );
        }
    }

person Marvos    schedule 16.06.2016    source источник
comment
Ваш html может не включать кнопку отправки, но вы можете выбрать ее, используя селекторы jquery и зная родительский элемент   -  person mattygee    schedule 16.06.2016
comment
спасибо, как это сделать?   -  person Marvos    schedule 16.06.2016
comment
На своей странице щелкните правой кнопкой мыши кнопку отправки (или область рядом с ней) и проверьте элемент. Это откроет окно разработчика и перейдет к контейнеру поблизости. Вы можете посмотреть идентификаторы оттуда. Если вам нужна помощь, вставьте то, что вы видите вокруг кнопки отправки.   -  person mattygee    schedule 16.06.2016
comment
‹a href=#finish role=menuitem›Отправить søknad‹/a› вот оно   -  person Marvos    schedule 17.06.2016


Ответы (2)


Это может быть немного общим (и я не проверял это), но это может помочь вам начать

$(document).find('input[type="submit"').prop('disabled', 'disabled');
person vegas2033    schedule 16.06.2016

После первой строки $(function() { добавьте:

var isFinishing = false;

В событии onFinished измените эту строку:

var form=$(this);

за :

if (isFinishing) return;

isFinishing = true;
var form=$(this);

Если событие success вызова AJAX не перезагружает страницу, вам следует рассмотреть возможность добавления этой строки в эту функцию:

isFinishing = false;
person Master DJon    schedule 16.06.2016
comment
Может кнопка не кнопка. Можете ли вы осмотреть эту кнопку отправки и проверить, каков ее HTML? - person Master DJon; 17.06.2016
comment
кнопка создается в файле js, а не в html, я не вижу ее в файле html, но когда я проверяю элемент, я получаю это ‹a href=#finish role=menuitem›Send søknad‹/a› - person Marvos; 17.06.2016
comment
Это то, о чем я думал. Я изменю ответ. - person Master DJon; 17.06.2016
comment
Мне грустно сообщать вам, что это не работает, теперь я не могу перейти к последнему шагу, чтобы увидеть кнопку отправки. Я очень благодарен за ваш ответ. - person Marvos; 18.06.2016
comment
Можете ли вы обновить свой код, чтобы я мог видеть, что вы сделали? Или, что еще лучше, вы можете создать jsFiddle, чтобы я мог с ним работать? - person Master DJon; 18.06.2016