Javascript 如何获取表单的onSubmit事件?

Javascript 如何获取表单的onSubmit事件?,javascript,html,forms,Javascript,Html,Forms,我想知道如何从表单中获取onsubmit事件来进行表单验证,因为我无法直接访问它。(我正在为评论编写Wordpress插件,因此无法直接访问表单标签或提交按钮。) 我在尝试为我的插件这么做时感到非常沮丧,所以我在下面写了一个Hello World版本。我希望它在我加载页面时显示“Hello World”警报,在我单击submit按钮时显示“form submitted”警报。相反,当页面加载时,它会同时显示两个弹出窗口 这是我的密码: <!DOCTYPE HTML PUBLIC "-/

我想知道如何从表单中获取
onsubmit
事件来进行表单验证,因为我无法直接访问它。(我正在为评论编写Wordpress插件,因此无法直接访问表单标签或提交按钮。)

我在尝试为我的插件这么做时感到非常沮丧,所以我在下面写了一个Hello World版本。我希望它在我加载页面时显示“Hello World”警报,在我单击submit按钮时显示“form submitted”警报。相反,当页面加载时,它会同时显示两个弹出窗口

这是我的密码:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Hello World</title>
    </head>
    <body>
    <h2>Test</h2>
    <form action="#" method="post" id="commentform">

    <p><input type="text" name="author" id="author" size="22" tabindex="1" />
    <label for="author"><small>Name (required)</small></label></p>

    <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />

    </form>

    <script type="text/JavaScript">
    <!--
    alert("Hello world");

    var formCheck = document.getElementById("commentform");

    formCheck.onSubmit = doMapping(); 

    function doMapping() {
        alert("form submitted");
        return false;
    }

    -->
    </script>     

    </body>
    </html> 

你好,世界
试验

姓名(必填)

更改此选项:

formCheck.onSubmit = doMapping()
为此:

formCheck.onSubmit = doMapping
在函数末尾添加括号时,执行该函数。分配函数(或将其作为参数传递给另一个函数)时,需要省略括号,因为这是在JavaScript中检索函数指针的方法


Edit:您还需要将
doMapping
函数的声明移到该函数的赋值上方,然后像这样移动到onsubmit事件(good catch tvanfosson!):

但是,如果未在其他地方使用
doMapping
函数,则可以将
doMapping
函数声明为匿名函数,如下所示:

formCheck.onSubmit = function() {
        alert("form submitted");
        return false;
    }
这对我来说似乎有点干净。

使用jQuery

$(document).ready( function() {
    $('#commentform').submit( function() {
        alert('form submitted');
        return false;
    });
});

谢谢大家!!实际上,我用另一种方法解决了这个问题,使用了Andrew的建议和window.onload事件——我认为问题部分是因为元素没有实际加载

window.onload = function(){
    if (document.getElementById("commentform")){
        document.getElementById("commentform").onsubmit = doMapping;
    }
}

function doMapping(){
            alert("form submitted");
            return false;
}

我认为您还必须更改顺序,因为在将doMapping指定为onSubmit处理程序之前,可能需要先定义doMapping。因此,如果有一个图像需要很长时间才能加载-通常像谷歌分析你的事件处理程序不会在用户点击提交。
window.onload = function(){
    if (document.getElementById("commentform")){
        document.getElementById("commentform").onsubmit = doMapping;
    }
}

function doMapping(){
            alert("form submitted");
            return false;
}