Я создаю форму, которая должна делать две вещи:
Если введено электронное письмо, отправьте данные с помощью скрытого iframe в Mailchimp, затем откройте модальный код, который включен в код.
Если в форме есть неправильное значение или нет значения, тогда предполагается, что в поле должно появиться сообщение типа "Пожалуйста, введите свой адрес электронной почты" или "Недействительный адрес электронной почты".
Проблемы с этим:
Я использую http://jqueryvalidation.org/ плагин, так что, где мой JS основан на.
HTML:
<form action="http://Verseux.us3.list-manage2.com/subscribe/post" id="myform1" class="myform1" method="POST" name="form" target="hidden-form">
<!-- edit form styles: rounded corners, seperation between field and label -->
<div class="row" id="form">
<div class="small-11 medium-8 large-7 small-centered columns">
<div class="row collapse">
<div class="form-field columns">
<input type="hidden" name="u" value="64f283b6044970e25fc1a2fc7">
<input type="hidden" name="id" value="3674d50bfa">
<input type="email" autocapitalize="off" autocorrect="off" name="email" id="MERGE0" placeholder="Get early access to VERSEUX">
</div>
<div class="form-button columns">
<input class="button postfix md-trigger" onclick="validate()" data-modal="modal-16" type="submit" name="submit" value="Sign Up">
<input class="button postfix1 md-trigger" data-modal="modal-16" type="submit" name="submit" value="Go">
</div>
</div>
</div>
</div>
</form>
<IFRAME style="display:none" name="hidden-form"></IFRAME>
<div class="row" id="sub-text">
<div class="small-10 medium-10 small-centered columns end">
<h2 id="welcome-2">
JULY TWENTY-FOURTH
</h2>
</div>
</div>
</div>
JS:
$(document).ready(function () {
$('#myform').validate({ // initialize the plugin
rules: {
email: {
required: true,
email: true,
minlength: 5
},
});
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});
Ваш код в примере неверен. Я немного исправил это, и теперь он работает так, как вы хотите:
Удалено onclick в html
<form action="localhost" id="myform1" class="myform1" method="POST" name="form" target="hidden-form">
<!-- edit form styles: rounded corners, seperation between field and label -->
<div class="row" id="form">
<div class="small-11 medium-8 large-7 small-centered columns">
<div class="row collapse">
<div class="form-field columns">
<input type="hidden" name="u" value="64f283b6044970e25fc1a2fc7">
<input type="hidden" name="id" value="3674d50bfa">
<input type="email" autocapitalize="off" autocorrect="off" name="email" id="MERGE0" placeholder="Get early access to VERSEUX">
</div>
<div class="form-button columns">
<input class="button postfix md-trigger" data-modal="modal-16" type="submit" name="submit" value="Sign Up">
<input class="button postfix1 md-trigger" data-modal="modal-16" type="submit" name="submit" value="Go">
</div>
</div>
</div>
</div>
</form>
<IFRAME style="display:none" name="hidden-form"></IFRAME>
<div class="row" id="sub-text">
<div class="small-10 medium-10 small-centered columns end">
<h2 id="welcome-2">
JULY TWENTY-FOURTH
</h2>
</div>
</div>
</div>
Добавлено сообщение и правильный идентификатор формы в JS:
$(document).ready(function () {
$('#myform1').validate({ // initialize the plugin
rules: {
email: {
required: true,
email: true,
minlength: 5
},
},
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
},
messages:{ email: "please eneter valid email"}
});
});
HTML5 может проверить поле электронной почты для вас
<form>
<input type="email" id="emailform" placeholder="Enter your email">
<input type="submit" value="Submit">
</form>
Когда пользователь отправляет сообщение, появляется сообщение об ошибке.
Также, если вы хотите сделать это через js. Просто получите значение входного элемента и верните false.
if ($('#emailform').val() == ""){
return false;
})
Ну, внимательно посмотрите свой код здесь:
... }); // You are closing the validation method and submitHandler is not part of any object config?
submitHandler: function (form) { ...
Если submitHandler обрабатывает ваше представление формы, а аргумент формы - это объект события, вам просто нужно сделать:
form.stopPropagation();
Karl..
событие onclick делает его одной кнопкой, а не кнопкой отправки, и когда форма проверяется в javascript, отправьте ее примерно так:
document.forms["form"].submit();
#myform
в своем коде js, но в html это#myform1