1
1
<!DOCTYPE html>
2
- < html lang ="en ">
2
+ < html lang ="ru ">
3
+
3
4
< head >
4
- < meta charset ="UTF-8 ">
5
- < title > $Title$</ title >
5
+ < meta charset ="utf-8 ">
6
+ < title > Форма обратной связи</ title >
7
+ < link rel ="stylesheet " href ="/feedback/css/style.css ">
6
8
</ head >
9
+
7
10
< body >
8
- $END$
11
+
12
+ < div class ="container ">
13
+ < h1 > Форма обратной связи</ h1 >
14
+
15
+ < div class ="form-container form__wrapper ">
16
+ <!-- Форма обратной связи -->
17
+ < form id ="form-1 " action ="/feedback/examples/form-processing-1.php " enctype ="multipart/form-data " novalidate >
18
+ < div class ="form-row ">
19
+ <!-- Имя пользователя -->
20
+ < div class ="form-group ">
21
+ < label for ="form-1-name " class ="control-label "> Имя</ label >
22
+ < input id ="form-1-name " type ="text " name ="name " class ="form-control " value ="" placeholder ="Имя " minlength ="2 "
23
+ maxlength ="30 " required ="required ">
24
+ < div class ="invalid-feedback "> </ div >
25
+ </ div >
26
+ <!-- Email пользователя -->
27
+ < div class ="form-group ">
28
+ < label for ="form-1-email " class ="control-label "> Email-адрес</ label >
29
+ < input id ="form-1-email " type ="email " name ="email " required ="required " class ="form-control " value =""
30
+ placeholder ="Email-адрес ">
31
+ < div class ="invalid-feedback "> </ div >
32
+ </ div >
33
+ </ div >
34
+ <!-- Сообщение пользователя -->
35
+ < div class ="form-group ">
36
+ < label for ="form-1-message " class ="control-label "> Сообщение (не менее 20 символов)</ label >
37
+ < textarea id ="form-1-message " name ="message " class ="form-control " rows ="3 "
38
+ placeholder ="Сообщение (не менее 20 символов) " minlength ="20 " maxlength ="500 "
39
+ required ="required "> </ textarea >
40
+ < div class ="invalid-feedback "> </ div >
41
+ </ div >
42
+
43
+ <!-- Файлы, для прикрепления к форме -->
44
+ < div class ="form-group form-attach " data-count ="5 ">
45
+ < div class ="form-attach__label "> Файлы (не более < span class ="form-attach__count "> 5</ span > )</ div >
46
+ < div class ="form-attach__wrapper ">
47
+ < input type ="file " name ="attach[] " multiple required >
48
+ < div class ="form-attach__description ">
49
+ < div > Нажмите для загрузки файлов или перетащите их</ div >
50
+ < div class ="text-sm "> PNG, JPG, GIF (до 512 Кбайт)</ div >
51
+ </ div >
52
+ < div class ="form-attach__items "> </ div >
53
+ </ div >
54
+ < div class ="invalid-feedback "> </ div >
55
+ </ div >
56
+
57
+ <!-- Капча -->
58
+ < div class ="form-group form-captcha ">
59
+ < img class ="form-captcha__image " src ="/feedback/captcha/captcha.php?id=captcha-1 " data-src ="/feedback/captcha/captcha.php?id=captcha-1 "
60
+ width ="132 " height ="46 " alt ="Капча ">
61
+ < div class ="form-captcha__refresh ">
62
+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 512 512 " width ="16 " height ="16 ">
63
+ < path fill ="currentColor "
64
+ d ="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z ">
65
+ </ path >
66
+ </ svg >
67
+ </ div >
68
+ < div class ="form-group form-captcha__input ">
69
+ < label for ="form-1-captcha " class ="control-label d-none "> Код, показанный на изображении</ label >
70
+ < input type ="text " name ="captcha " maxlength ="6 " required ="required " id ="form-1-captcha "
71
+ class ="form-control captcha " placeholder ="****** " autocomplete ="off " value ="">
72
+ < div class ="invalid-feedback "> </ div >
73
+ </ div >
74
+ </ div >
75
+
76
+ <!-- Пользовательское солашение -->
77
+ < div class ="form-group form-agree form-check ">
78
+ < input class ="form-check-input " type ="checkbox " name ="agree " id ="form-1-agree " required value ="true ">
79
+ < label class ="form-check-label " for ="form-1-agree "> Нажимая кнопку, я принимаю условия < a href ="# "> Пользовательского
80
+ соглашения</ a > и даю своё согласие на обработку моих персональных данных</ label >
81
+ < div class ="invalid-feedback "> </ div >
82
+ </ div >
83
+
84
+ <!-- Сообщение об ошибке -->
85
+ < div class ="form-error form-error_hide "> Исправьте данные и отправьте форму ещё раз.</ div >
86
+
87
+ <!-- Кнопка для отправки формы на сервер -->
88
+ < div class ="form-submit ">
89
+ < button type ="submit "> Отправить сообщение</ button >
90
+ </ div >
91
+ </ form >
92
+
93
+ <!-- Сообщение об успешной отправки формы -->
94
+ < div class ="form-success form-success_hide ">
95
+ < div class ="form-success__message ">
96
+ Форма успешно отправлена.
97
+ Нажмите < button type ="button " class ="form-success__btn "> здесь</ button > , если нужно отправить ещё одну форму.
98
+ </ div >
99
+ </ div >
100
+ </ div >
101
+
102
+ < div class ="form-container form__wrapper ">
103
+ <!-- Форма обратной связи -->
104
+ < form id ="form-2 " action ="/feedback/examples/form-processing-2.php " enctype ="multipart/form-data " novalidate >
105
+ < div class ="form-row ">
106
+ <!-- Имя пользователя -->
107
+ < div class ="form-group ">
108
+ < label for ="form-2-name " class ="control-label "> Имя</ label >
109
+ < input id ="form-2-name " type ="text " name ="name " class ="form-control " value ="" placeholder ="Имя " minlength ="2 "
110
+ maxlength ="30 " required ="required ">
111
+ < div class ="invalid-feedback "> </ div >
112
+ </ div >
113
+ <!-- Email пользователя -->
114
+ < div class ="form-group ">
115
+ < label for ="form-2-email " class ="control-label "> Email-адрес</ label >
116
+ < input id ="form-2-email " type ="email " name ="email " required ="required " class ="form-control " value =""
117
+ placeholder ="Email-адрес ">
118
+ < div class ="invalid-feedback "> </ div >
119
+ </ div >
120
+ </ div >
121
+ <!-- Сообщение пользователя -->
122
+ < div class ="form-group ">
123
+ < label for ="form-2-message " class ="control-label "> Сообщение (не менее 20 символов)</ label >
124
+ < textarea id ="form-2-message " name ="message " class ="form-control " rows ="3 "
125
+ placeholder ="Сообщение (не менее 20 символов) " minlength ="20 " maxlength ="500 "
126
+ required ="required "> </ textarea >
127
+ < div class ="invalid-feedback "> </ div >
128
+ </ div >
129
+
130
+ <!-- Файлы, для прикрепления к форме -->
131
+ < div class ="form-group form-attach " data-count ="5 ">
132
+ < div class ="form-attach__label "> Файлы (не более < span class ="form-attach__count "> 5</ span > )</ div >
133
+ < div class ="form-attach__wrapper ">
134
+ < input type ="file " name ="attach[] " multiple required >
135
+ < div class ="form-attach__description ">
136
+ < div > Нажмите для загрузки файлов или перетащите их</ div >
137
+ < div class ="text-sm "> PNG, JPG, GIF (до 512 Кбайт)</ div >
138
+ </ div >
139
+ < div class ="form-attach__items "> </ div >
140
+ </ div >
141
+ < div class ="invalid-feedback "> </ div >
142
+ </ div >
143
+
144
+ <!-- Капча -->
145
+ < div class ="form-group form-captcha ">
146
+ < img class ="form-captcha__image " src ="/feedback/captcha/captcha.php?id=captcha-2 " data-src ="/feedback/captcha/captcha.php?id=captcha-2 "
147
+ width ="132 " height ="46 " alt ="Капча ">
148
+ < div class ="form-captcha__refresh ">
149
+ < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 512 512 " width ="16 " height ="16 ">
150
+ < path fill ="currentColor "
151
+ d ="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z ">
152
+ </ path >
153
+ </ svg >
154
+ </ div >
155
+ < div class ="form-group form-captcha__input ">
156
+ < label for ="form-2-captcha " class ="control-label d-none "> Код, показанный на изображении</ label >
157
+ < input type ="text " name ="captcha " maxlength ="6 " required ="required " id ="form-2-captcha "
158
+ class ="form-control captcha " placeholder ="****** " autocomplete ="off " value ="">
159
+ < div class ="invalid-feedback "> </ div >
160
+ </ div >
161
+ </ div >
162
+
163
+ <!-- Пользовательское солашение -->
164
+ < div class ="form-group form-agree form-check ">
165
+ < input class ="form-check-input " type ="checkbox " name ="agree " id ="form-2-agree " required value ="true ">
166
+ < label class ="form-check-label " for ="form-2-agree "> Нажимая кнопку, я принимаю условия < a href ="# "> Пользовательского
167
+ соглашения</ a > и даю своё согласие на обработку моих персональных данных</ label >
168
+ < div class ="invalid-feedback "> </ div >
169
+ </ div >
170
+
171
+ <!-- Сообщение об ошибке -->
172
+ < div class ="form-error form-error_hide "> Исправьте данные и отправьте форму ещё раз.</ div >
173
+
174
+ <!-- Кнопка для отправки формы на сервер -->
175
+ < div class ="form-submit ">
176
+ < button type ="submit "> Отправить сообщение</ button >
177
+ </ div >
178
+ </ form >
179
+
180
+ <!-- Сообщение об успешной отправки формы -->
181
+ < div class ="form-success form-success_hide ">
182
+ < div class ="form-success__message ">
183
+ Форма успешно отправлена.
184
+ Нажмите < button type ="button " class ="form-success__btn "> здесь</ button > , если нужно отправить ещё одну форму.
185
+ </ div >
186
+ </ div >
187
+ </ div >
188
+
189
+
190
+ </ div >
191
+
192
+ < script src ="/feedback/js/form-processing.js "> </ script >
193
+ < script >
194
+ /*
195
+ attachMaxItems: 3,
196
+ attachMaxFileSize: 128,
197
+ attachExt: ['png', 'jpg']
198
+ */
199
+
200
+ document . querySelectorAll ( 'form' ) . forEach ( ( el ) => {
201
+ ItcSubmitForm . getOrCreateInstance ( el ) ;
202
+ } )
203
+
204
+ document . addEventListener ( 'itc.successSendForm' , ( e ) => {
205
+ const el = e . target . closest ( '.form-container' ) . querySelector ( '.form-success' ) ;
206
+ el . classList . remove ( 'form-success_hide' ) ;
207
+ } ) ;
208
+
209
+ // при клике на .form-success__btn
210
+ document . addEventListener ( 'click' , ( e ) => {
211
+ if ( ! e . target . closest ( '.form-success__btn' ) ) {
212
+ return ;
213
+ }
214
+ const el = e . target . closest ( '.form-container' ) . querySelector ( 'form' ) ;
215
+ const form = ItcSubmitForm . getOrCreateInstance ( el ) ;
216
+ form . reset ( ) ;
217
+ e . target . closest ( '.form-container' ) . querySelector ( '.form-success' ) . classList . add ( 'form-success_hide' ) ;
218
+ } ) ;
219
+
220
+ </ script >
221
+
9
222
</ body >
10
- </ html >
223
+
224
+ </ html >
0 commit comments