我建立一个小的着陆页有一个简单的演示电子邮件注册表单。 我想有焦点时表单域打开,然后缩在模糊回落。
不过我现在面临的问题是,当你点击提交按钮,这个教唆模糊函数,隐藏的按钮和收缩的形式。 我需要找到一种方法来阻止只有当用户点击把重点放在提交按钮.blur()方法。 有没有什么好的解决方法吗?
希望得到任何帮助我能!
我建立一个小的着陆页有一个简单的演示电子邮件注册表单。 我想有焦点时表单域打开,然后缩在模糊回落。
不过我现在面临的问题是,当你点击提交按钮,这个教唆模糊函数,隐藏的按钮和收缩的形式。 我需要找到一种方法来阻止只有当用户点击把重点放在提交按钮.blur()方法。 有没有什么好的解决方法吗?
希望得到任何帮助我能!
这是不是最漂亮的解决方案,但它确实工作。 试试这个:
$("#submitbtn").mousedown(function() {
mousedownHappened = true;
});
$("#email").blur(function() {
if (mousedownHappened) // cancel the blur event
{
mousedownHappened = false;
}
else // blur event is okay
{
$("#email").animate({
opacity: 0.75,
width: '-=240px'
}, 500, function() {
});
// hide submit button
$("#submitbtn").fadeOut(400);
}
});
DEMO这里
我知道这个问题是旧的,但做到这一点最简单的方法是检查event.relatedTarget。 if语句的第一部分是为了防止抛出一个错误,如果relatedTarget为null(IF会短路,因为空相当于虚假和浏览器都知道,它没有检查第二个条件:第一条件是假的在&&语句)。
所以:
if(event.relatedTarget && event.relatedTarget.type!="submit"){
//do your animation
}
Try this inside .blur handler:
if ($(':focus').is('#submitbtn')) { return false; }
为什么不靠submit
,而不是事件click
? http://jsbin.com/ehujup/5/edit
只是情侣变成HTML和JS
包装投入的form
,并添加required
电子邮件,因为它显然假设是
<form id="form">
<div id="signup">
<input type="email" name="email" id="email" placeholder="me@email.com" tabindex="1" required="required">
<input type="submit" name="submit" id="submitbtn" value="Signup" class="submit-btn" tabindex="2">
</div>
</form>
在JS,删除处理这听#submitbtn
$("#submitbtn").on("click", function(e){
e.stopImmediatePropagation();
$("#signup").fadeOut(220);
});
并使用,而不是提交表单listerer
$("#form").on("submit", function(e){
$("#signup").fadeOut(220);
return false;
});
你可以使用$.ajax()
以使其更好。
这样做,你的验证方面获得点和原生浏览器的HTML5验证将检查邮件格式,它是支持的。