Цитата:
|
Спасибо, что объяснили. Я всё же решила всё таки воспользоваться только проверки с цифрами:
<!DOCTYPE html> <html> <head><title>Test</title> <style type="text/css"> .err{ border-bottom: 2px solid #F90A0A; } .ok{ border-bottom: 2px solid #34F458; } </style> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script> $(function(e){ $("form").on("input", "table input", function() { var error_message = "Только цифры"; var pattern = /^\d+$/; var num = this.value.trim(); var ok = pattern.test(num); $(this).removeClass("ok err"); if(num) { $(this).addClass(ok ? "ok" : "err"); } var index = $("form table input").index(this); $("form table .error_form").eq(index).html(ok || !num ? "" : error_message); }) }); </script> </head> <body> <form method="POST" action="form.php"> <table border="0"> <tr> <td><input type="text" value="" name="mass[age][]"></td> <td><input type="text" value="" name="mass[exp][]"></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <tr> <td><input type="text" value="" name="mass[age][]"></td> <td><input type="text" value="" name="mass[exp][]"></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <tr> <td><input type="text" value="" name="mass[age][]"></td> <td><input type="text" value="" name="mass[exp][]"></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <br> </table> <input type="submit" value="Отправить"> </form> </body> </html> Изменила кое-что третье поле с выбором пола не обязательно сделала из него список. Можно как нибудь при отправке формы сообщать пользователю какие поля он ещё не заполнил? Например он создал несколько динамических полей и не заполнил их потом нажимает submit и ему выдаёт сообщение под каждым полем красным "Только цифры". И тут выбор у пользователя либо удалить лишнее либо заполнить их. |
Katy93,
может проще required добавить в input? |
Как пример ранее, со стилями? HTML 5 и CSS
|
Katy93,
<td><input type="text" value="" name="mass[age][]" required ></td> |
Проверила скрипт:
<!DOCTYPE html> <html> <head><title>Test</title> <style type="text/css"> .err{ border-bottom: 2px solid #F90A0A; } .ok{ border-bottom: 2px solid #34F458; } </style> </head> <body> <form method="POST" action="form.php"> <table border="0"> <tr> <td><input type="text" value="" name="mass[age][]" pattern="\d{1,3}" required></td> <td><input type="text" value="" name="mass[exp][]" pattern="\d{1,3}" required></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <tr> <td><input type="text" value="" name="mass[age][]" pattern="\d{1,3}" required></td> <td><input type="text" value="" name="mass[exp][]" pattern="\d{1,3}" required></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <tr> <td><input type="text" value="" name="mass[age][]" pattern="\d{1,3}" required></td> <td><input type="text" value="" name="mass[exp][]" pattern="\d{1,3}" required></td> <td><select id="gender1" name="driver[gender][]"> <option label="-"></option> <option value="1">Мужской</option> <option value="0">Женский</option> </select></td> </tr> <tr> <td><span class="error_form" ></span></td> <td><span class="error_form" ></span></td> <td></td> </tr> <br> </table> <input type="submit" value="Отправить"> </form> </body> </html> К сожалению не подходит дело в том что эта проверка работает только в том случае если нажата кнопка submit. А у меня до этой кнопки нужно ещё добраться. Дело в том что у меня постраничная форма, в начале большая часть скрыта стилями display: none;, при нажатии кнопки далее открывается новая часть формы $("#second").show();, а старая закрывается $("#first").hide();. Вообщем использовать html5 валидацию тут не получится. |
Сценарий, это:
1) разбудили проверить поля 2) проверяет поля: -если поле имеет атрибут required, то обязателен для заполнения -если имеет pattern, то проверяется по этому шаблону, иначе по типу поля -если поле не обязательно для заполнения, но заполнено, то проверяется по типу поля, но могут быть и пользовательские определения -сообщения об ошибках извлекаются из data атрибутов 3) сделал работу и спать Это в конкретном сценарии можно шаблоны определять, какие-то сообщения, а в вашем случае так поступать, это вырастить монстра. |
В каком моём случае, я что-то не совсем поняла?
|
Цитата:
var error_message = "Только цифры"; var pattern = /^\d+$/; тогда придется на каждый тип поля, писать код, хотя во многом то действия будут одни и те же, и в случае изменения условий придется код править вновь. И либо this.value.... либо сразу $(this), коли большую часть вы выполняете на JQ, и $(this).val(), с установкой $.valHooks, чтобы при проверке значения уже были очищены от крайних пробелов. |
И как же мне html 5 валидацию применить если она привязана только к submit, а submit доступно только будет на следующем этапе. Т.е. после нажатия кнопки "Следующая" или мне из этой кнопки (следующая) сделать submit, тогда получится несколько submit в одной форме.
|
Часовой пояс GMT +3, время: 18:02. |