在Javascript中捕获表单提交的事件是什么?

时间:2009-05-31 06:31:03

标签: javascript javascript-events validation

这里有几个问题:

  • 我想知道在表单提交时使用什么事件来执行一些javascript(进行一些验证)?
  • 完成验证后,如何在javascript中提交表单?

干杯...

5 个答案:

答案 0 :(得分:10)

假设您有一个名为myForm的表单:

var form = document.getElementById('myForm');

抓住提交:

try {
    form.addEventListener("submit", someFunction, false);
} catch(e) {
    form.attachEvent("onsubmit", someFunction); //Internet Explorer 8-
}

注意:如果您要停止提交表单,请将someFunction返回false。

提交表格:

form.submit();

答案 1 :(得分:4)

您可以使用addEventListener(event, callback),但Internet Explorer从未正确支持它。

IE使用attachEvent(event, callback)代替。

我强烈建议使用预建的addEvent函数(可用的批量)或jQuery,Prototype,Mootools等库,因为它们都内置了出色的事件处理函数。

答案 2 :(得分:3)

如果你使用jquery,它有一个很好的内置表单提交事件钩子,可以让生活变得非常简单。请查看以下内容:

http://docs.jquery.com/Events/submit

答案 3 :(得分:2)

1)您在寻找OnSubmit事件吗?

2)你可以在onsubmit事件上调用类似validate()的函数,如果验证失败则返回false。如果返回false,则从onsubmit函数返回false。

可能就像,

<form name="test" OnSubmit = "return Submit()">

function Submit()
{
return Validate()
}

function Validate()
{
//Validation code goes here
}

答案 4 :(得分:0)

我看了一下Serhiy对Sasha帖子的评论。 Serhiy提供的JsFiddle示例很有趣,我想写一个描述Serhiy提到的行为的答案:

假设您有一个名为myForm的表单:

var form = document.getElementById('myForm');

使用提交按钮时收集提交(&lt; input type ='submit'&gt;):

try {
    form.addEventListener("submit", validationFunction, false);
} catch(e) {
    form.attachEvent("onsubmit", validationFunction); //Internet Explorer 8-
}

注意:如果您要停止提交表单,请将validationFunction返回false。

通过javascript提交表单:

form.submit();

注意:如果使用&lt; input type =“button”onclick =“form.submit()”/&gt ;,则不会调用随attachEvent添加的onsubmit事件处理程序。因此,您应该使用类似的东西:

&lt; input type =“button”onclick =“if(validationfunction())form.submit();” /&GT;

或者如果你有一个按钮:

您可以添加javascript以附加到按钮的点击事件。 var btnValidateAndSubmit = document.getElementById(“btnValidateAndSubmit”);

try {
    btnValidateAndSubmit .addEventListener("click", validationAndSubmitFunction, false);
} catch(e) {
    btnValidateAndSubmit .attachEvent("onclick", validationAndSubmitFunction); //Internet Explorer 8-
}

最后,假设您正在使用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();
            }
        };
    }


    }
}