В этой статье мы рассмотрим, как отключить кнопку отправки после отправки формы в jQuery. Это не позволит пользователю отправить форму несколько раз. Мы также учитываем возможность того, что отправка формы недействительна или не проходит проверку, и, таким образом, в таком случае мы снова включим кнопку Мы будем использовать библиотеку jQuery для этого примера. Использование jQuery для выбора соответствующей кнопки отправки каждой формы на странице и отключение правильной кнопки для предотвращения отправки дубликатов формы.
Итак, без дальнейших задержек, давайте приступим к созданию нашего примера приложения. Для целей этого примера мы будем использовать следующий стек для нашего приложения.
Мы используем Node.js, который является JavaScript-фреймворком на стороне сервера, чтобы быстро раскрутить веб-сервер. jQuery — это библиотека пользовательского интерфейса, позволяющая сгладить различия в реализации JavaScript между поставщиками браузеров и версиями браузеров. Visual Studio Code IDE — это бесплатный инструмент, который мне наиболее удобен, но вы можете свободно использовать тот, с которым чувствуете себя как дома.
1. Структура приложения
Структура папок нашего приложения выглядит следующим образом:
2. HTML-разметка
index.html
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<! DOCTYPE html> < html > < head > integrity = "sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" crossorigin = "anonymous" ></ script > < script src = "myscript.js" ></ script > < style > body { height: 500px; width: 100%; } .flex-container { height: 100%; display: flex; flex-direction: column-reverse; justify-content: center; align-items: center; } </ style > </ head > < body > < div class = "flex-container" > < form > < fieldset > < legend >JCG -- jQuery Disable Submit Button Example</ legend > < label for = "inputEmail" >Email address</ label > < input type = "email" id = "inputEmail" aria-describedby = "emailHelp" placeholder = "Enter email" > < label for = "inputPassword" >Password</ label > < input type = "password" id = "inputPassword" placeholder = "Password" > < input type = "checkbox" id = "rememberMe" > < label for = "rememberMe" >Remember Me</ label > < button type = "submit" >Submit</ button > </ fieldset > </ form > </ div > </ body > </ html > |
Вот как выглядит наша разметка целевой страницы, она имеет простую форму входа с кнопкой отправки. Он запрашивает у пользователя адрес электронной почты и пароль и предоставляет флажок «Запомнить меня». Я использовал некоторые правила стиля для макета страницы.
3. JQuery Script
Чтобы отключить кнопку отправки, мы добавим обработчик для события отправки формы. В этом обработчике событий мы выберем кнопку отправки и установим ее отключенный атрибут, чтобы отключить ее. Мы также установим текст кнопки в строку, отправляющую форму, чтобы указать пользователю, что форма обрабатывается. Селектор для обработчика события submit будет выглядеть следующим образом:
1
|
$( 'form' ).submit( function (event) {}); |
Как только мы выберем форму, при отправке события мы отключим кнопку, которая является частью формы. Чтобы просто выбрать кнопку, которая является частью формы, а не другие на странице. Мы будем использовать следующий селектор:
1
|
$( 'button' , this ); |
Обратите внимание на второй параметр в селекторе, он гарантирует, что кнопка, которая является частью этой формы, выбрана. После выбора мы установим атрибут с помощью функции attr jQuery. А также установите текст кнопки для «отправки…», как показано ниже:
1
2
|
$( "button" , this ).attr( "disabled" , "disabled" ); $( "button" , this ).text( "Submitting..." ); |
Окончательная версия нашего скрипта, расположенная в myscript.js, выглядит следующим образом:
myscript.js
1
2
3
4
5
6
7
|
$(document).ready( function () { $( "form" ).submit( function (event) { $( "button" , this ).attr( 'disabled' , 'disabled' ); $( "button" , this ).text( "Submitting..." ); event.preventDefault(); }); }); |
Обратите внимание на вызов метода event.preventDefault (), он предназначен для демонстрации и отменяет отправку формы и последующее обновление страницы. Так что мы можем увидеть наш скрипт в действии. Это не обязательно, иначе.
4. Пример в действии
Теперь мы можем запустить наш код, введя приведенные ниже команды в корне проекта
1
2
|
>npm install >npm start |
Далее мы перейдем к URL http: // localhost: 8080, чтобы увидеть наш код в действии. При нажатии на кнопку «Отправить» мы можем увидеть результаты ниже.
5. Загрузите исходный код
Вы можете скачать полный исходный код этого примера здесь: jQuery Отключить кнопку после отправки Пример