Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用prototype.js停止表单提交_Javascript_Forms_Prototypejs - Fatal编程技术网

Javascript 使用prototype.js停止表单提交

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

似乎存在一个问题,或者我不知道如何停止使用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>
这一切都是胡闹:

现在的问题是,如果单击按钮,它会完美地停止表单,但当表单使用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;
     }
}