Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.01.2020, 11:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Katy93
"ü" как его на клавиатуре поставить?
переключится на английский, включить Num Lock, зажать Alt, набрать 0252 на числовой панели.
Ответить с цитированием
  #12 (permalink)  
Старый 01.02.2020, 09:06
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

Спасибо, что объяснили. Я всё же решила всё таки воспользоваться только проверки с цифрами:
<!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 и ему выдаёт сообщение под каждым полем красным "Только цифры". И тут выбор у пользователя либо удалить лишнее либо заполнить их.
Ответить с цитированием
  #13 (permalink)  
Старый 01.02.2020, 11:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Katy93,
может проще required добавить в input?
Ответить с цитированием
  #14 (permalink)  
Старый 01.02.2020, 12:13
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

Как пример ранее, со стилями? HTML 5 и CSS
Ответить с цитированием
  #15 (permalink)  
Старый 01.02.2020, 12:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Katy93,
<td><input type="text" value="" name="mass[age][]" required ></td>
Ответить с цитированием
  #16 (permalink)  
Старый 01.02.2020, 14:09
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

Проверила скрипт:
<!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 валидацию тут не получится.
Ответить с цитированием
  #17 (permalink)  
Старый 01.02.2020, 16:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сценарий, это:

1) разбудили проверить поля
2) проверяет поля:
-если поле имеет атрибут required, то обязателен для заполнения
-если имеет pattern, то проверяется по этому шаблону, иначе по типу поля
-если поле не обязательно для заполнения, но заполнено, то проверяется по типу поля, но могут быть и пользовательские определения
-сообщения об ошибках извлекаются из data атрибутов
3) сделал работу и спать

Это в конкретном сценарии можно шаблоны определять, какие-то сообщения, а в вашем случае так поступать, это вырастить монстра.
Ответить с цитированием
  #18 (permalink)  
Старый 01.02.2020, 17:50
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

В каком моём случае, я что-то не совсем поняла?
Ответить с цитированием
  #19 (permalink)  
Старый 01.02.2020, 18:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Katy93
В каком моём случае, я что-то не совсем поняла
В вашем случае html5 валидация так и останется и будет нужна при отправлении формы, а пользовательская проверка инициализироваться по смене элементов формы. Для скрипта атрибуты их, это есть и правила, и данные. То есть, если вот так подходить:

var error_message = "Только цифры";
var pattern = /^\d+$/;


тогда придется на каждый тип поля, писать код, хотя во многом то действия будут одни и те же, и в случае изменения условий придется код править вновь.

И либо this.value.... либо сразу $(this), коли большую часть вы выполняете на JQ, и $(this).val(), с установкой $.valHooks, чтобы при проверке значения уже были очищены от крайних пробелов.
Ответить с цитированием
  #20 (permalink)  
Старый 01.02.2020, 20:00
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

И как же мне html 5 валидацию применить если она привязана только к submit, а submit доступно только будет на следующем этапе. Т.е. после нажатия кнопки "Следующая" или мне из этой кнопки (следующая) сделать submit, тогда получится несколько submit в одной форме.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AngularJS: вычисление динамических полей в таблице factory_girl Библиотеки/Тулкиты/Фреймворки 0 13.06.2015 19:28
проверка полей при отправке all4me1982 Общие вопросы Javascript 6 17.03.2015 14:02
Проверка полей serrrgggeee Javascript под браузер 0 08.10.2014 15:16
Проверка полей отправляемой формы. denisOgr jQuery 6 18.10.2010 19:40
проверка полей формы!!!! DENAT Общие вопросы Javascript 0 05.06.2008 22:14