我今天学到了一些新东西:这就是DOM的工作方式。
从MDN网站:
onsubmit="return false;"
从基于Gecko的应用程序中调用此方法时,不会触发表单的onsubmit事件处理程序(例如)。通常,不能保证HTML用户代理会调用它。
根据HTML规范:
submit()
调用该方法时,必须form
从form
元素本身 元素, 。
其次是(第4.10.22.3节)
submit
在 form 处引发 ,该 会冒泡并且可以取消命名。
因此,如果submit()
设置了方法标志,则不会触发该事件。
通过以下代码(JSFiddle示例),我能够得到您(和我)期望的行为:
<form onSubmit={this.handleSubmit} ref="form">
<textarea onKeyPress={this.handleKeyPress} />
</form>
// ...
this.refs.form.getDOMNode().dispatchEvent(new Event("submit"));
(您将在IE中需要更多详细的代码。)
jQuery的$(form).submit()
委托$(form).trigger("submit")
,所以我希望这是一个类似的解决方法。