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;
}