在Javascript中捕获表单提交的事件是什么?
这里有几个问题:在Javascript中捕获表单提交的事件是什么?,javascript,validation,dom-events,Javascript,Validation,Dom Events,这里有几个问题: 我想知道我应该使用什么事件在表单提交时执行一些Javascript(进行一些验证) 完成验证后,如何用Javascript提交表单 假设您有一个名为myForm的表单: var form = document.getElementById('myForm'); var form = document.getElementById('myForm'); 要捕获提交: try { form.addEventListener("submit", someFunction
- 我想知道我应该使用什么事件在表单提交时执行一些Javascript(进行一些验证)
- 完成验证后,如何用Javascript提交表单
- 假设您有一个名为
myForm
的表单:
var form = document.getElementById('myForm');
var form = document.getElementById('myForm');
要捕获提交:
try {
form.addEventListener("submit", someFunction, false);
} catch(e) {
form.attachEvent("onsubmit", someFunction); //Internet Explorer 8-
}
注意:如果要停止表单提交,请将someFunction
return设置为false
提交表格:
form.submit();
如果您使用jquery,它有一个很好的内置表单提交事件钩子,可以让生活变得非常简单。请查看以下内容: 1)您正在寻找活动吗 2) 您可以在onsubmit事件上调用类似validate()的函数,如果验证失败,则返回false。If false从onsubmit函数返回false 可能是,
<form name="test" OnSubmit = "return Submit()">
function Submit()
{
return Validate()
}
function Validate()
{
//Validation code goes here
}
函数提交()
{
返回Validate()
}
函数验证()
{
//验证代码在这里
}
您可以使用addEventListener(事件,回调)
,但Internet Explorer从未正确支持它
IE使用attachEvent(事件、回调)
代替
我强烈建议使用一个预构建的addEvent函数(很多都有)或者像jQuery、Prototype、Mootools这样的库,因为它们都内置了优秀的事件处理函数。我看了Serhiy在Sasha的帖子上的评论。Serhiy提供的JSFIDLE示例很有趣,我想写一个答案来描述Serhiy提到的行为:
假设您有一个名为
myForm
的表单:
var form = document.getElementById('myForm');
var form = document.getElementById('myForm');
要在使用提交按钮()时捕获提交,请执行以下操作:
注意:如果要停止表单提交,请将validationFunction
return设置为false
要通过javascript提交表单,请执行以下操作:
form.submit();
注意:如果使用,则不会调用随attachEvent添加的onsubmit事件处理程序。因此,您应该使用以下内容:
或者,如果您有一个按钮:
您可以添加javascript以附加到按钮的单击事件。
var btnValidateAndSubmit=document.getElementById(“btnValidateAndSubmit”)
最后,假设您正在使用SharePoint web表单编辑列表项,并且希望向web表单添加自定义验证。您可以将以下javascript添加到web表单中,以便为OK按钮的onclick添加自定义验证
var oElements = document.getElementsByTagName("input");
for (var i=0; i< oElements.length; i++)
{
var elementName = oElements[i].getAttribute("Title");
var elementType = oElements[i].getAttribute("type");
var elementValue = oElements[i].value;
if (elementType=="button" && elementValue=="OK")
{
var okbutton = oElements[i];
// alert("typeof okbutton.onclick = "+typeof okbutton.onclick);
if (typeof okbutton.onclick == "function")
{
var previousfunction = okbutton.onclick;
okbutton.onclick = function()
{
if (validateForm())
{
previousfunction();
}
};
}
else
{
var aspnetForm = document.getElementById("aspnetForm");
aspnetForm.attachEvent("onsubmit",validateForm);
okbutton.onclick = function()
{
if (validateForm())
{
aspnetForm.submit();
}
};
}
}
}
var oElements=document.getElementsByTagName(“输入”);
对于(变量i=0;i
这不起作用。不知道为什么这是投票?form.submit()的作用与在@Serhiy上运行此代码的作用不同:我有没有说过它会这样做?问题是一旦我完成了验证,我该如何用javascript提交表单?
我想这就回答了这个问题。我想不是。我想这两个问题你都回答得很好。只是它们不能结合在一起工作。这让我有点恼火,因为这种组合在过去浪费了我很多时间,我讨厌有人钻到那个洞里去。我想我应该编辑答案,而不是在评论中抱怨。