2012-11-11 47 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