Javascript 使用prototype.js停止表单提交
似乎存在一个问题,或者我不知道如何停止使用prototypejs提交表单。也许有人能帮我解决我面临的问题 考虑一下这个简单的形式Javascript 使用prototype.js停止表单提交,javascript,forms,prototypejs,Javascript,Forms,Prototypejs,似乎存在一个问题,或者我不知道如何停止使用prototypejs提交表单。也许有人能帮我解决我面临的问题 考虑一下这个简单的形式 <form id="formContact" method="post"> <p>Name: <br /> <input type="text" id="name" name="yourName" size="20" /> </p> <p>E
<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>
这一切都是胡闹:
现在的问题是,如果单击按钮,它会完美地停止表单,但当表单使用javascript提交时,它不会。?
这是prototype无法停止事件的1%吗 根据大量谷歌搜索,显然在调用
.submit()
方法时,表单上没有触发onsubmit事件。这不是缺少PrototypeJS,而是Javascript中尚未修复的行为
您可以通过调用
onsubmit
处理程序,然后观察事件是否停止,然后决定启动submit方法()
使代码按照您希望的方式运行。简单的方法是将type=“submit”
更改为type=“button”
然后捕获按钮的单击事件,或者,您可以捕获提交事件:
function stopDefAction(evt) {
evt = evt || event;
if (evt.preventDefault) {
evt.preventDefault();
}
else {
evt.returnValue = false;
}
}
请参阅:很遗憾,我无法更改源代码,但我可以包含javascript,因此这不是解决当前问题的方法。这可以通过jquerytho来完成。我会继续搜索。您使用的是JavaScript-您可以更改任何您想要的内容。这里的情况不同,因为此表单是在绑定到按钮的不同事件上提交的(fiddle只是用示例表单说明了这一点)我不能为此操作按钮或dom。这可以用jquery完成,没有任何问题,所以我认为它会触发,让我看看是否可以制作一个例子看看这个使用jquery的小提琴可以处理这个场景:这是两个不同的
submit()
方法-在你第一次使用PrototypeJS的小提琴中submit()
被调用的方法是实际的表单对象方法-与jQuery的第二种方法相比,submit()
方法是一种jQuery方法,它最终触发实际的表单对象方法。jQuery中的FWIW和fiddle触发的事件与js中的注释相反。
function stopDefAction(evt) {
evt = evt || event;
if (evt.preventDefault) {
evt.preventDefault();
}
else {
evt.returnValue = false;
}
}