Короткий ответ, нет, нет способа «вызвать» функциональность по умолчанию встроенного пузырька html5 перед отправкой формы, вы можете checkValidity()
на некоторых входах, но опять-таки не работает так, как вы хотели бы.Если не считать предотвращения по умолчанию, если вы все еще хотите отправить форму после завершения проверки, вы все равно можете обработать этот стиль, выполнив следующие действия:
Обратите внимание, что в формах вы не хотите, чтобы стили CSS проверки былиПосле применения вы можете просто добавить атрибут novalidate
к форме.
HTML:
<form name="login" id="loginForm" method="POST">
<input type="email" name="username" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="LOG IN" class="hero left clearBoth">
</form>
Если вы не используете SCSS, я настоятельно рекомендуюГлядя на это, он намного более управляем, прост в написании и менее запутан.Примечание: в примере с скриптом у меня есть точная CSS, которая будет скомпилирована.Я также включил пример стиля пузыря.
SCSS:
form:not([novalidate]) {
input, textarea {
&:required {background: transparent url('/../../images/icons/red_asterisk.png') no-repeat 98% center;}
&:required:valid {background: transparent url('/../../images/icons/valid.png') no-repeat 98% center; @include box-shadow(0 0 5px #5cd053);border-color: #28921f;}
&:not(:focus):valid {box-shadow: none;border: 1px solid $g4;}
&:focus:invalid {background: transparent url('/../../images/icons/invalid.png') no-repeat 98% center; @include box-shadow(0 0 5px #d45252); border-color: #b03535}
}
}
span.formHintBubble {position:absolute; background:$g7; margin-top:50px;@include borderRadius(10px); padding:5px 40px 5px 10px; color:white; @include opacity(0.9); @include box-shadow(1px 1px 6px 1px rgba(0,0,0,0.2));
&:after {
@include triangle(30px, $g7, up); content: " "; margin-bottom:27px; left:25px;
}
.cross {background:black; border:1px solid $g3; @include borderRadius(10px); width:15px; height:15px; color:#fff; display:block; line-height:15px; position:absolute; right:5px; top:50%; margin-top:-7.5px; padding:0; text-align:center; font-size:10px; cursor:pointer;}
}
JAVASCRIPT:
Здесь мыможет сделать что-то напуганное, чтобы использовать сообщения по умолчанию и наследовать их внутри собственного «пузыря» или окна сообщения об ошибке.
var form = $('form');
var item = form.find(':invalid').first();
var node = item.get(0);
var pos = item.position();
var message = node.validationMessage || 'Invalid value.';
var bubble = $('<span/>').html('<span class="formHintBubble" style="left: ' + pos.left + 'px; top:' + pos.top + 'px;">' + message + '<div class="cross">X</div></span>').contents();
bubble.insertAfter(item);
DEMO:
http://jsfiddle.net/shannonhochkins/wJkVS/
Наслаждайтесь, и я надеюсь, что помогу другим с проверкой формы HTML5, так как это здорово, и это нужно сделать!
Шеннон