jQuery: Предотвращение по умолчанию перед отправкой (дополнительная функциональность), но после успешной проверки [дубликат]

Конструкторы - это специальные методы, используемые для инициализации ваших членов класса различными сигнатурами / параметрами

0
задан Sparky 12 October 2014 в 02:17
поделиться

1 ответ

Заголовок цитаты:

«Как использовать плагин проверки jQuery при нажатии кнопки«

Ответ: t нужно что-либо сделать, потому что событие click кнопки уже записано автоматически плагином, а затем активируется проверка.

Другими словами, решение состоит в том, чтобы удалить всю вашу функцию click обработчика и поставить ajax() внутри опции submitHandler метода .validate().

Согласно документации:

submitHandler: Обратный вызов для обработки фактического представления, когда форма действительна. Возвращает форму как единственный аргумент. Заменяет отправку по умолчанию. Правильное место для отправки формы через Ajax после ее проверки .

$(function () {

    $("#form-insert").validate({
        rules: {
            tbRollNo: "required"
        },
        messages: {
            tbRollNo: "Required Field"
        },
        submitHandler: function(form) {
            // your ajax would go here.
            $.ajax({
                // your ajax options
                ....
            });
            return false; // extra insurance preventing the default form action
        }
    });

});

Цитировать OP:

«Поэтому, когда я нажимаю кнопку выше, он прямо читает функцию $("#insertstd").click, но не запускает проверку, а когда я удаляю id="insertstd" с кнопки, то выполняет проверку.»

Это потому, что ваш обработчик click вмешивается в обработчик submit, уже встроенный в плагин. Когда вы удалите id с кнопки, вы перестанете использовать обработчик click и разрешите плагин проверять. Поскольку вы хотите использовать ajax() после , форма проходит проверку, вы можете поместить ее внутри опции обратного вызова submitHandler, которая предоставляется плагином jQuery Validate.

0
ответ дан Sparky 15 August 2018 в 15:28
поделиться
  • 1
    Спасибо за ответ. Да, теперь он работает, но я сталкиваюсь с еще одной небольшой проблемой, которая возникает, когда я пишу e.preventDefault (); под submitHandler: function (form) ...., его дающая 404 страница не найдена ошибка. Как я могу избежать этой ошибки и использовать e.preventDefault (), спасибо – user3004110 12 October 2014 в 06:47
  • 2
    @ user3004110, почему, по-вашему, вам нужно предотвращать обнаружение там? В этом контексте это не подходит. – Sparky 12 October 2014 в 07:46
  • 3
    Извините за мой глупый вопрос снова, потому что я новичок в jquery. На самом деле я пытаюсь предотвратить обновление страницы, поэтому я использовал e.preventDefault (). И не могли бы вы немного объяснить, почему не нужно, где я его написал, спасибо и оцените вашу помощь. – user3004110 12 October 2014 в 10:14
  • 4
    @ user3004110, вам это не нужно, потому что если вы просто следуете моему коду, обновление страницы не будет. .preventDefault() не имеет абсолютно никакого дела внутри submitHandler, и если вы его там положите, вы, вероятно, что-то сломаете. Плагин автоматически обрабатывает все и до тех пор, пока вы включите опцию submitHandler, не будет отправки формы по умолчанию (обновление страницы не будет). Поэтому вы должны вручную поставить код представления формы внутри submitHandler ... в вашем случае, ajax(). – Sparky 12 October 2014 в 17:06
Другие вопросы по тегам:

Похожие вопросы: