我正在用簡單的演示電子郵件註冊表單構建一個小的着陸頁。我希望在聚焦時打開表單域,然後縮小模糊。jQuery停止.blur()事件點擊「提交」按鈕時
但是,我面臨的問題是,當你點擊提交按鈕,這會激發模糊功能,隱藏按鈕並縮小窗體。我只需要找到一種方法來停止.blur()方法,只有當用戶點擊以專注於提交按鈕時。有沒有什麼好的解決方法?
希望我能得到任何幫助!
我正在用簡單的演示電子郵件註冊表單構建一個小的着陸頁。我希望在聚焦時打開表單域,然後縮小模糊。jQuery停止.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);
}
});
試試這個.blur處理程序中:
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="[email protected]" 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);
});
並改用提交表單監聽器
$("#form").on("submit", function(e){
$("#signup").fadeOut(220);
return false;
});
您可以使用$.ajax()
使其更好。
這樣做您可以在驗證方面獲得積極意義,並且本機瀏覽器的HTML5驗證程序將在支持它的地方使用檢查電子郵件格式。
我知道這個問題是舊的,但最簡單的方法是檢查event.relatedTarget。 if語句的第一部分是爲了防止在relatedTarget爲null時引發錯誤(IF會短路,因爲null等價於false,並且瀏覽器知道如果第一個條件爲false,它不必檢查第二個條件在聲明中的& &)。
所以:
if(event.relatedTarget && event.relatedTarget.type!="submit"){
//do your animation
}
非常感謝你。我從來沒有用relatedTarget屬性,我肯定會花一些時間閱讀它。 – Jake
看起來像一個偉大的方法,但我遇到了這個問題。從最後一個輸入到提交按鈕的選項卡也會阻止模糊處理程序運行,這是我不想發生的。 –
@TimB您是否找到針對該問題的任何解決方案,我面臨同樣的問題 – UmeRonaldo
是它!感謝一羣我欣賞小解決方法。最大的問題是當你點擊+按住提交按鈕時,淡化效果會發生,然後按鈕消失。但是通過這個例子,你可以無限期地點擊+保持,淡入效果被隱藏起來。再次真誠地感謝你,非常感謝! – Jake
歡迎您:) –