Форма проверки JQuery внутри Bootstrap Modal не отправляется после проверки

Обновлено: Чтобы поставить вопрос в перспективе, я создал еще один Скрипка, который показывает ту же форму вне модального окна.

Когда он соответствует правильным условиям, то есть вы вводите адрес электронной почты и нажимаете кнопку Get Started, он отправляет правильное отображение страницы PHP, в этом случае отображается ошибка 404, но он делает то, что должен делать, РАЗМЕСТИТЬ!

ИСХОДНАЯ ПРОБЛЕМА: Теперь вернемся к проблеме: я хотел бы отправить свою форму внутри модального окна начальной загрузки, но когда я открываю модальное окно, набираю электронное письмо и нажимаю кнопку начала работы: НИЧЕГО НЕ ПРОИЗОШЛО

Форма проверки JQuery внутри Bootstrap Modal не отправляется после проверки

Что я делаю неправильно? Отсутствует ли решение JavaScript для правильной отправки формы или мешают ошибки проверки?

Я новичок в JavaScript, поэтому я не могу понять решение для кодирования, если оно на самом деле основано на js.

Пожалуйста, помогите мне разобраться в этой странной модальной проблеме, спасибо!

Рабочий пример: https://jsfiddle.net/o5vpt6ck/3/

HTML:

<form id = "signup-form" class = "cd-signin-modal__form" action = "confirm.php" method = "post">
                <h3 class = "bigsentence black text-center font-weight-bold">Create</h3>
                <p class = "cd-signin-modal__fieldset">
                    <label class = "cd-signin-modal__label cd-signin-modal__label--email cd-signin-modal__label--image-replace" for = "signup-email">Enter your email address</label>
                    <input class = "cd-signin-modal__input cd-signin-modal__input--full-width cd-signin-modal__input--has-padding cd-signin-modal__input--has-border signupfield" id = "email" type = "email" name = "email" placeholder = "Enter your email address">
                </p>

                <p class = "cd-signin-modal__fieldset">
                    <input class = "cd-signin-modal__input cd-signin-modal__input--full-width" name = "submit" type = "submit" value = "GET STARTED">
                </p>
            </form>

JS:

$("#signup-form").validate ({

    // validation rules for registration formd
errorClass: "error-class",
validClass: "valid-class",
errorElement: 'div',
errorPlacement: function(error, element) {
    if (element.parent('.input-group').length) {
        error.insertAfter(element.parent());
    } else {
        error.insertAfter(element);
    }
},
onError : function(){
    $('.input-group.error-class').find('.help-block.form-error').each(function() {
      $(this).closest('.form-group').addClass('error-class').append($(this));
    });
},
        rules: {
    email: {email:true, required:true}
  },

    messages: {
        email: {
            required: "Please enter your email address",

        },


            highlight: function(element, errorClass) {
    $(element).removeClass(errorClass);
}    
    }

});

Я проверял предоставленный вами код, но он выдает несколько ошибок в js, например, он не может найти элемент с идентификатором «signup-username», и вы дали id = «email» нескольким элементам. Идентификатор можно присвоить одному элементу на одной странице. Поэтому, пожалуйста, обновите его до правильного кода.

Kamal Paliwal 30.10.2018 17:41
В этом плагине нет такой опции под названием onError!
Sparky 01.11.2018 14:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
955
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

У вас есть логика проверки, но вы не говорите ей, что делать, когда форма действительно действительна!

Вам нужно добавить это в объект проверки:

submitHandler: function(form) {
    $(form).submit(); // You submit the actual form here
}

https://jqueryvalidation.org/validate/#submithandler

jsfiddle.net/o5vpt6ck/5 по-прежнему не работает. Не могли бы вы рассказать, как отправить эту форму?
ChosenJuan 26.10.2018 22:17

Попробуйте написать так вместо form.submit();, см. Здесь jsfiddle.net/o5vpt6ck/6. Подача действительно происходит, попробуйте ее на своем коде вне jsfiddle

Benjamin Dowson 26.10.2018 22:41

Эта рабочий пример тоже не работает, я не смог заставить ее работать с моим кодом. Пожалуйста, посмотрите эту скрипку: jsfiddle.net/okuwv57m видите, когда вы вводите правильный адрес электронной почты и нажимаете кнопку отправки, он переходит на следующую страницу? Я хочу сделать это внутри скрипки

ChosenJuan 29.10.2018 19:28

В плагин для submitHandler встроена функция по умолчанию, поэтому нет необходимости указывать ее!

Sparky 01.11.2018 15:00

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

проблема возникает из строки номер 82, входной сигнал является нулевым, поэтому ваш код ломается в функции AddClass.

Сообщите мне, если это решит вашу проблему. Ваше здоровье :)

К сожалению, этого не произошло :( Проблема заключается в самом модальном окне, когда я помещаю код проверки jQuery внутри любого модального окна, после выполнения условий проверки он не отправляется.

ChosenJuan 30.10.2018 16:22

Пожалуйста, никогда не публикуйте код или ошибки в виде изображений, не публикуя также фактический код и ошибки. В противном случае ваш контент не будет виден поисковой системой.

Sparky 02.11.2018 16:51
Ответ принят как подходящий

В вашем коде не хватает двух вещей

Добавьте это в валидатор формы регистрации

submitHandler: function(frm) { 
    frm.submit();
}

Затем в форме регистрации удалите

name = "submit"

из

<input class = "cd-signin-modal__input cd-signin-modal__input--full-width" name = "submit" value = "GET STARTED" type = "submit">

Вы можете прочитать объяснение здесь javascript submit () не является функцией?

Феноменальный ответ! Спасибо, что не только объяснили проблему, но и предоставили мне ресурсы, чтобы узнать больше с помощью другого вопроса Stackoverflow. Ты лучший!

ChosenJuan 01.11.2018 18:31

К вашему сведению - опция submitHandler не требуется, потому что указанная вами функция в точности совпадает с функцией submitHandler по умолчанию, уже встроенной в плагин. Другими словами, оставьте submitHandler, и по умолчанию он будет работать точно так же. Ваша проблема была вызвана name = "submit", а не отсутствием submitHandler.

Sparky 01.11.2018 19:43

Нет, не работает. submitHandler является обязательным. Проверить ссылку jqueryvalidation.org/documentation/#link-too-much-recursion

Pawnesh Kumar 02.11.2018 07:46

Вы не понимаете, о чем говорите. Если вы используете $(form).submit() вместо form.submit(), произойдет слишком много рекурсии. Если вы посмотрите на исходный код, вы увидите, что submitHandler с этой функцией уже встроен в плагин, и вы используете его только тогда, когда хотите изменить или добавить к этому поведению по умолчанию. Утверждение, что submitHandler является обязательной опцией, легко опровергается. См. Этот jsFiddle, который показывает проверку и отправляет, когда он действителен, без необходимости указывать submitHandler: https://jsfiddle.net/xnpo7m6v/

Sparky 02.11.2018 16:57

Другие вопросы по теме