2010-12-07 44 views
3

我想通过调用元素的blur方法强制一个onblur处理程序运行。但之后,我认为这是行不通的,因为我记得调用FormElement提交不会导致其onsubmit方法被运行。在JavaScript中,为什么blur方法触发blur事件,但submit方法不会触发提交事件?

经过一番实验后,我发现调用blur会导致元素的onblur处理函数被调用。这看起来很不一致,并不是让我感到意外(毕竟这是JS)。不过,如果有充分的理由,我想知道。在模糊但未提交的情况下是否有充分的理由调用处理程序?

回答

2

我同意这看起来不一致。我的看法是,OnSubmit行为有很多遗留行李,因为它的大部分功能都是为了让人们可以在表单元素中进行编码而设计的。为此,onsubmit被用于验证输入而不破解打开源代码编辑器或JavaScript文件。我的猜测是,当他们编码的这种行为(很久以前),这似乎明智的,因为一旦你在JavaScript程序员可以很容易地验证输入自己,使自动检查是没有必要的。看起来像是对我的疏忽。

这个关于quirksmode的网站特别警告了这个,很明显很多人都被这个困惑了。

http://www.quirksmode.org/js/forms.html

相关问题