2012-11-11 43 views
1

我有一個簡單的形式,用文字和這樣
模糊事件dimiss點擊事件jQuery中

<label>Input something </label> 
<input type="text" id="TextId" value="Whatever you input,it is wrong" /> 
<div id="ErrorDiv"></div> 
<input type="submit" id="SubmitButton""/> 


我在文本框中附加focusOut事件展現在ErrorDiv的mutiline消息的提交按鈕。
當我單擊按鈕提交時,文本的onfocusout首先執行,它使我的按鈕移出它的位置並且Onclick事件不會被觸發。
fiddle link
任何一個能向我解釋它是如何發生,如何解決它
感謝。

回答

1

模糊事件在點擊事件之前被觸發。發生這種情況是因爲在釋放鼠標按鈕後觸發了單擊事件。使這項工作最簡單的方法是在mousedown事件上顯示警報,而不是在click事件上顯示。

例如,使用此

$("#SubmitButton").live("mousedown", function() { 
     alert("button click!"); 
    }); 

上述變更Chrome爲我工作在OS X,但你應該知道,有一些解決這個controversy。更好的解決方案是重新安排元素,以便驗證消息不會推出提交按鈕。

+0

僅供參考,我有一些技巧:使用Css使我的按鈕佈局在它的位置,直到發生點擊事件。 http://jsfiddle.net/UgJL8/10/ – ChinhPLQ

+2

這是一個有趣的方法,但是...我會避免以這種方式應用樣式。這是不可維護的,這只是其中一個問題。我建議你儘可能地改變佈局,以避免問題的發生。例如,您可以使用jQuery驗證插件(http://docs.jquery.com/Plugins/Validation)並在窗體的右側顯示驗證錯誤,甚至使用工具提示來顯示這樣的錯誤(http ://djpate.com/2010/11/16/using-jquery-validation-plugin-with-tooltips/)。 (你必須在每個字段的'focusout'上調用validate()) – beon