在表单提交上调用自定义函数

时间:2014-01-13 06:49:28

标签: javascript jquery forms

我有一个以表格形式交换数据属性和动作的功能:

$(function() {
    function SwapAction() {
        var dataAttr = $('.review-form').data();
        $('.review-form')[0].action = dataAttr.action;
    }
});

如果表单通过验证检查,我希望在提交表单时执行此操作。验证JS看起来像这样:

var submitcount7303 = 0;

function checkWholeForm7303(theForm) {
  var why = "";
  if (theForm.FirstName) why += isEmpty(theForm.FirstName.value, "First Name");
  if (theForm.LastName) why += isEmpty(theForm.LastName.value, "Last Name");
  if (theForm.EmailAddress) why += checkEmail(theForm.EmailAddress.value);
  if (why != "") {
    alert(why);
    return false;
  }
  if (submitcount7303 == 0) {
    submitcount7303++;
    SwapAction(); //Calling Function 
    theForm.submit();
    return false;
  } else {
    alert("Form submission is in progress.");
    return false;
  }
}

表单未提交,我收到错误:

Reference Error: SwapAction is not defined.

以下是带有操作的表单HTML:

<form action="" data-action="/FormProcessv2.aspx?WebFormID=89926&amp;OID={module_oid}&amp;OTYPE={module_otype}&amp;EID={module_eid}&amp;CID={module_cid}" enctype="multipart/form-data" onsubmit="return checkWholeForm7303(this)" method="post" name="catwebformform7303" class="review-form custom">

我认为我忽视了一些简单的事情。如果我删除SwapAction();并删除data-action并将表单设置回默认值,则可以正常运行。

如何修复错误并实施我的脚本?

3 个答案:

答案 0 :(得分:1)

该函数不在范围内,它在包装DOM就绪函数的范围内,所以删除它:

function SwapAction() {
    var dataAttr = $('.review-form').data();
    $('.review-form')[0].action = dataAttr.action;
}

答案 1 :(得分:1)

您在文档就绪的回调函数中定义SwapAction(),这是一个不同的范围,因此您无法在全局范围内访问它。

答案 2 :(得分:1)

SwapAction()超出了范围。

如果您想使用第一种方法:

$(function() {
SwapAction = function {
    var dataAttr = $('.review-form').data();
    $('.review-form')[0].action = dataAttr.action;
}
});

然后你可以在调用当前代码时调用它。