确定提交的表单

时间:2014-07-21 12:45:48

标签: javascript jquery

我在一个页面中有多个表单,并且所有3个表单都调用相同的函数进行验证

validateForm() 

验证代码是

if (document.forms["myForm"]) {
        var fieldsToCheck = [ ['fname', lang.FirstName], ['lname', lang.LastName], ['email', lang.Email], ['phone_num', lang.PhoneNumber] ];
} // end if there is a form named myforms
else if (document.forms['addressform']) { // save a location form , ['town', lang.Town] is a dropdown
    var fieldsToCheck = [ ['nickname', lang.AddressNickname], ['street_no', lang.StreetNumber], ['address', lang.Address] ];

} // end forms
else if (document.forms['passform']) { // save a new password
    var fieldsToCheck = [ ['txtNewPassword', lang.NewPassword], ['ctxtNewPassword', lang.ConfirmPassword]];

} // end forms  

表格如下:

<form action="/action" name="passform" onsubmit="return validateForm()" method="POST">

其中name是passform,其他表单包含myform和addressform。

现在每当我提交表单时,它总是试图从第一个表单中找出文本输入,我猜是因为document.form["formname"]检查表单是否存在并继续,因为它存在并不重要您提交的表格是否有办法解决这个问题?

重要:我知道这可能是验证表单的错误方法,因为我可以执行form.submit()函数验证等,但遗憾的是代码不是我的,所以如果有的话使用此设置的解决方案我更喜欢它!

2 个答案:

答案 0 :(得分:2)

你必须通过这个

onsubmit="return validateForm(this)"

function validateForm(elem) {
alert( elem.name);
}

DEMO

答案 1 :(得分:0)

使用以下来获取表单的ID

$("form").submit(function (e) {
    e.preventDefault();
    var formId = this.id;  // "this" is a reference to the submitted form
});