我在同一页面(顶部和底部)有两个AJAX新闻订阅表单。两种形式都具有相同的ID。顶部表单完美无缺,但我无法将警报消息显示在底部表单中。
我找到了this question,但我不确定如何在我的代码中实现答案。
以下表格:
<div class="newsletter">
<form id="newsletter" class="newsletter-signup" action="" method="POST" accept-charset="UTF-8">
<input id="hero-section-newsletter-email-input" type="email" name="email">
<button class="button" type="submit">
Subscribe
</button>
<div id="newsletter-alert" style="display: none;" data-alert></div>
</form>
</div>
这里是jQuery:
(function() {
'use strict';
var newsletterAlert = function(message) {
$('#newsletter-alert').text(message);
};
var isValidEmail = function(email) {
var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
return pattern.test(email);
};
$('#newsletter').on('submit', function(e) {
var data,
$form = $(this),
$email = $form.find('input[type="email"]');
e.preventDefault();
$('#newsletter-alert').show();
if ( !isValidEmail( $email.val() )) {
newsletterAlert('Looks like you entered an invalid email address! Please try again.');
} else {
newsletterAlert('Subscribing you now...');
data = $form.serialize();
$.ajax({
url: 'PATH_TO_SUBSCRIBE_PHP',
type: 'post',
data: data,
success: function(msg) {
if ( msg === 'success') {
newsletterAlert('Success! Please check your email to confirm.');
$email.val('');
} else {
newsletterAlert( msg );
}
},
error: function(msg) {
newsletterAlert('Error! ' + msg.statusText);
}
});
}
});
})();
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
不要对顶部和底部表单使用相同的ID。
id
在文档中必须是唯一的 - 请参阅MDN Docs。
而是有两个单独的id
并在绑定到submit
事件时在一个jQuery调用中引用它们:
$('#newsletter_top, #newsletter_bottom').on('submit', function(e) {
// ...
});
并在您的HTML中:
<form id="newsletter_top" ...>
</form>
<form id="newsletter_bottom" ...>
</form>