我想知道如何抢onsubmit
表单中的事件来进行一些表单验证,因为我无权直接访问它。 (我正在编写一个用于评论的 WordPress 插件,因此无法直接访问表单标签或提交按钮。)
我在尝试为我的插件执行此操作时感到非常沮丧,因此我在下面编写了一个 Hello World 版本。我希望它在加载页面时显示“Hello World”警报,并在单击提交按钮时显示“表单已提交”警报。相反,它会在页面加载时显示两个弹出窗口。
这是我的代码:
<!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()
to this:
formCheck.onSubmit = doMapping
当您在函数末尾添加括号时,您就会执行该函数。当您分配一个函数(或将其作为参数传递给另一个函数)时,您需要省略括号,因为这是在 JavaScript 中检索函数指针的方法。
Edit:您还需要移动声明doMapping
函数上面将该函数分配给 onsubmit 事件,如下所示(好捕获 tvanfosson!):
function doMapping() {
alert("form submitted");
return false;
}
formCheck.onSubmit = doMapping();
然而,如果doMapping
函数没有在其他地方使用,你可以声明doMapping
作为匿名函数运行,如下所示:
formCheck.onSubmit = function() {
alert("form submitted");
return false;
}
这对我来说似乎更干净一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)