0

似乎存在问题或我不知道如何停止使用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% 吗?

4

2 回答 2

1

简单的方法是更改type="submit"​​为type="button"然后捕获按钮的单击事件,或者您可以捕获提交事件:

function stopDefAction(evt) {
     evt = evt || event;
     if (evt.preventDefault) {
          evt.preventDefault();
     }
     else {
          evt.returnValue = false;
     }
}

请参阅:IE 9 中的停止事件(无需升级到 Prototype 1.7)

于 2013-03-25T16:11:29.873 回答
1

根据很多谷歌搜索,显然在.submit()调用方法时不会在表单上触发 onsubmit 事件。这不是缺少 PrototypeJS,而是更多的是 Javascript 中尚未修复的行为。

onsubmit您可以通过调用处理程序然后观察事件是否停止然后决定触发提交来使您的代码按照您希望的方式运行method()

于 2013-03-25T16:11:14.753 回答