按enter键时提交Magento AJAX新闻稿
我使用代码通过一个提交按钮通过AJAX提交时事通讯信息,但不幸的是,当用户填写他们的电子邮件地址并按enter键时,只需重新加载页面,而不保存任何数据 我想让一个用户按enter键,以获得与用户单击submit按钮相同的结果。谢谢你的智慧/指导 这是我目前的代码:按enter键时提交Magento AJAX新闻稿,ajax,magento,newsletter,Ajax,Magento,Newsletter,我使用代码通过一个提交按钮通过AJAX提交时事通讯信息,但不幸的是,当用户填写他们的电子邮件地址并按enter键时,只需重新加载页面,而不保存任何数据 我想让一个用户按enter键,以获得与用户单击submit按钮相同的结果。谢谢你的智慧/指导 这是我目前的代码: <div class="block block-subscribe"> <div id="feedback" style="display:none" class="mini-newsletter">
<div class="block block-subscribe">
<div id="feedback" style="display:none" class="mini-newsletter">
Thank you for subscribing to our newsletter!
</div>
<form name="newsletter-form" id="newsletter-form" method="post">
<div class="block-content">
<div class="input-box">
<input onkeypress="handleKeyPress(event,this.form)" type="text" placeholder="Email address" name="email" id="newsletter" title="<?php echo $this->__('Subscribe to Our Newsletter') ?>" class="required-entry input-subscribe" style="width:178px;" />
<div class="error-news-msg" id="error-news-msg" style="display:none;">Please enter a valid email address.</div>
</div>
<div class="actions">
<div class="news-loader" id="news-loader" style="text-align:center; display:none;">
<img src="<?php echo $this->getSkinUrl('images/news-loader.gif'); ?>" />
</div>
<button type="button" title="<?php echo $this->__('Subscribe') ?>" onclick="myfunc();" class="button">
<span><span>Subscribe</span></span>
</button>
</div>
</div>
</form>
</div>
感谢您订阅我们的时事通讯!
这是一个常见的问题,似乎是针对Internet Explorer的
问题在于,按钮单击正在提交表单并触发onclick事件。这是两个不同的事件,表单提交似乎优先
要解决这个问题,您需要输入一个返回false将>编码到onclick调用中:
<button type="button" title="<?php echo $this->__('Subscribe') ?>" onclick="myfunc(); return false;" class="button">
我让它工作了
我改变了:
<form name="newsletter-form" id="newsletter-form" method="post">
致:
然后改变了:
function myfunc()
<button type="button" title="<?php echo $this->__('Subscribe') ?>" onclick="myfunc();" class="button">
我加了一行:
var newsletterSubscriberFormDetail = new VarienForm('newsletter-form');
event.preventDefault();
打开:app/design/frontend/default/modern/template/newsletter/subscribe.phtml
创建此文件的一个备份,并用此代码替换它
<div class="awis-news-block">
<div class="ajax-newsletter-subscribe-form">
<form id="ajax_newsletter_subscribe_form" method="post">
<input type="text" name="email" id="newsletter" title="<?php echo $this->__('Sign up for our newsletter') ?>" class="input-text required-entry validate-email">
<button id="ajax-newsletter-submit" class="button" type="submit" title="JOIN">.
<span><span>JOIN</span></span>
</button>
<input type="hidden" class="url1" value="<?php echo $this->getFormActionUrl() ?>">
<span class="error" style="display:none"> Please Enter Email Id.</span>
<span class="valid" style="display:none"> Please enter a valid email address.To review our privacy policy, please click here.</span>
<span class="success" style="display:none">Thank you for joining our email club. Check your email for your 15% off coupon!</span>
</form>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
//]]>
</script>
<script type="text/javascript">
$(function() {
$(".button").click(function() {
var email = $("#newsletter").val();
var url1 = $(".url1").val();
var dataString = 'email='+ email;
if(email=='')
{
$('.success').fadeOut(200).hide();
$('.valid').fadeOut(200).hide();
$('.error').fadeIn(200).fadeOut(8000);
}
if (email!='')
{
var a = email;
var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{1,4}$/;
if(filter.test(a)){
ajaxn();
}
else{
$('.error').fadeOut(200).hide();
$('.success').fadeOut(200).hide();
$('.valid').fadeIn(200).fadeOut(8000);
}
}
function ajaxn()
{
$.ajax({
type: "POST",
url: url1,
data: dataString,
success: function()
{
$('.error').fadeOut(200).hide();
$('.valid').fadeOut(200).hide();
$('.success').fadeIn(200).fadeOut(8000);
}
});
}
return false;
});
});
</script>
一般来说,代码块的良好实践是只将相关的HTML放在一个块中,然后将相关的JS放在另一个块中。如果你没有包括足够的内容,你可能会被要求扩展它,但是粘贴在整个源代码中会使它不那么可读。我必须承认,我没有见过Chrome这样做。你试过这个改变了吗?我看不出这个改变有什么效果。
<button type="button" title="<?php echo $this->__('Subscribe') ?>" onclick="myfunc(event)" class="button">
var newsletterSubscriberFormDetail = new VarienForm('newsletter-form');
event.preventDefault();
<div class="awis-news-block">
<div class="ajax-newsletter-subscribe-form">
<form id="ajax_newsletter_subscribe_form" method="post">
<input type="text" name="email" id="newsletter" title="<?php echo $this->__('Sign up for our newsletter') ?>" class="input-text required-entry validate-email">
<button id="ajax-newsletter-submit" class="button" type="submit" title="JOIN">.
<span><span>JOIN</span></span>
</button>
<input type="hidden" class="url1" value="<?php echo $this->getFormActionUrl() ?>">
<span class="error" style="display:none"> Please Enter Email Id.</span>
<span class="valid" style="display:none"> Please enter a valid email address.To review our privacy policy, please click here.</span>
<span class="success" style="display:none">Thank you for joining our email club. Check your email for your 15% off coupon!</span>
</form>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
//]]>
</script>
<script type="text/javascript">
$(function() {
$(".button").click(function() {
var email = $("#newsletter").val();
var url1 = $(".url1").val();
var dataString = 'email='+ email;
if(email=='')
{
$('.success').fadeOut(200).hide();
$('.valid').fadeOut(200).hide();
$('.error').fadeIn(200).fadeOut(8000);
}
if (email!='')
{
var a = email;
var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{1,4}$/;
if(filter.test(a)){
ajaxn();
}
else{
$('.error').fadeOut(200).hide();
$('.success').fadeOut(200).hide();
$('.valid').fadeIn(200).fadeOut(8000);
}
}
function ajaxn()
{
$.ajax({
type: "POST",
url: url1,
data: dataString,
success: function()
{
$('.error').fadeOut(200).hide();
$('.valid').fadeOut(200).hide();
$('.success').fadeIn(200).fadeOut(8000);
}
});
}
return false;
});
});
</script>