Показать ошибки в JavaScript в форме HTML5
У меня есть форма HTML5 с обязательными полями:
<form id="my_form">
<input type="text" name="myfield1" required>
<input type="text" name="myfield2" required>
<input type="text" name="myfield3" required>
<button type="button" id="my_button">Check</button>
</form>
Кроме того, у меня есть следующий код jQuery:
$('#my_button').on('click', function() {
if ($('#my_form').checkValidity() == false) {
//show errors
}
});
Я хотел бы заставить показывать ошибки HTML5 в строке //show errors
.
Ответы
Ответ 1
Если вы хотите показать пузыри проверки, сначала необходимо отправить форму. Измените тип button
на submit
и прослушайте событие submit
.
Также обратите внимание, что в jQuery нет метода checkValidity
, сначала вы должны получить необработанный элемент DOM:
// on submit event browser will validate the form and show the bubbles
$('#my_form').on('submit', function() {
if (this.checkValidity() == false) {
return false;
}
// ...
});
http://jsfiddle.net/m5duh44x/
Ответ 2
Как насчет добавления поля подсказки внутри формы и изменения ее значения HTML в зависимости от ошибки?
HTML
<form id="my_form">
<div id="prompt"></div>
<input type="text" name="myfield1" required>
<input type="text" name="myfield2" required>
<input type="text" name="myfield3" required>
<button type="button" id="my_button">Check</button>
</form>
JS
$('#my_button').on('click', function() {
if ($('#my_form').checkValidity() == false) {
$('#prompt').removeClass().addClass('error').html('your error message');
}
});
Конечно, вы можете использовать этот div, чтобы вызывать как успешные, так и сообщения об ошибках. Чтобы выполнить его, вы можете создать правильные стили CSS i.e.
CSS
.success {
background-color:green;
}
.error {
background-color:red;
}
и назначьте соответствующий класс в зависимости от ваших потребностей (см. фрагмент выше).
Ответ 3
Просто добавьте div для сообщений об ошибках...
<form id="my_form">
<input type="text" name="myfield1" required>
<input type="text" name="myfield2" required>
<input type="text" name="myfield3" required>
<button type="button" id="my_button">Check</button>
</form>
<div id="errors"></div>
//Часть JS
$('#my_button').on('click', function() {
if ($('#my_form').checkValidity() == false) {
//show errors in the error DIV
$("#errors").empty();
$("#errors").text("error message");
}
});
Ответ 4
У меня та же проблема, html5 пузыри не появляются, когда вы захватываете событие on.click и что-то с ним делаете, например, чтобы продолжить с ajax после проверки html5.
Я заметил, что если в захвате события click есть какой-либо код (простое предупреждение), то не отображаются ошибки проверки html5, соответствующие каждому полю (пузырькам)
Предполагается, что проверка существующего html5 работает (что это не потеряно и работает правильно) и что больше, чем это, может захватить событие click и продолжить выполнение операций из JavaScript
HTML5 требует ввода, где пузырь должен появиться!
<form id='form_insertar' method="post">
<div class="modal-body">
<div class="form-group">
<label for="first_name">First Name</label>
<input type="text" id="first_name" placeholder="First Name" class="form-control" maxlength="100" required />
</div>
<div class="form-group">
<label for="last_name">Last Name</label>
<input type="text" id="last_name" placeholder="Last Name" class="form-control" required />
</div>
<div class="form-group">
<label for="email">Email Address</label>
<input type="text" id="email" placeholder="Email Address" class="form-control" required/>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" id='btn_addRecord' class="btn btn-primary">Add Record</button>
</div>
</form>
JavaScript-код, из-за которого он не появляется:
$(document).ready(function(){
$('#btn_addRecord').on("click", function(event){
//event.preventDefault();
if ($("#form_insertar")[0].checkValidity()) {
console.log('Validado el form: Inserta los datos con ajax!');
//addRecord();
return true;
}
if (!$("#form_insertar")[0].checkValidity()) {
console.log('No validado el form: Devolvemos false y no hacemos nada. (LAMENTABLEMENTE HAY ALGO DESCONOCIDO POR LO QUE NO SE MUESTRAN LOS BUBBLES o ERRORES)');
return false;
}
//alert('test');
});
});