似乎有一个问题或我缺乏知识如何停止使用prototypejs提交表单。也许有人可以帮我解决我面临的问题
考虑这个简单的表格
<form id="formContact" method="post">
<p>Name:
<br />
<input type="text" id="name" name="yourName" size="20" />
</p>
<p>E-mail:
<br />
<input type="e-mail" name="yourEmail" size="20" />
</p>
<p>Message:
<br />
<textarea cols="20" rows="10" name="yourMessage"></textarea>
</p>
<p>
<input type="submit" value="Submit this form" name="submitButton" />
</p>
</form>
来自原型手册http://prototypejs.org/doc/latest/dom/Event/stop/
的这个小js片段Event.observe('formContact', 'submit', function (event) {
var login = $F('name').strip();
if ('' == login) {
Event.stop(event);
// Display the issue one way or another
}
});
$('formContact').submit();
这一切都在小提琴中:http://jsfiddle.net/C3eFu/2/
现在问题在于,如果单击按钮,它会完美地停止表单,但是当使用javascript提交表单时不会。 这是原型未能阻止事件的1%吗?
答案 0 :(得分:1)
根据很多Googleing显然,在调用.submit()
方法时,表单上没有触发onsubmit事件。这不是缺少PrototypeJS,而是更多的Javascript中尚未解决的行为。
您可以通过调用onsubmit
处理程序,然后观察事件是否已停止然后决定触发提交method()
答案 1 :(得分:1)
简单的方法是将type="submit"
更改为type="button"
然后捕获按钮的click事件,或者您可以捕获提交事件:
function stopDefAction(evt) {
evt = evt || event;
if (evt.preventDefault) {
evt.preventDefault();
}
else {
evt.returnValue = false;
}
}