我有一个以表格形式交换数据属性和动作的功能:
$(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&OID={module_oid}&OTYPE={module_otype}&EID={module_eid}&CID={module_cid}" enctype="multipart/form-data" onsubmit="return checkWholeForm7303(this)" method="post" name="catwebformform7303" class="review-form custom">
我认为我忽视了一些简单的事情。如果我删除SwapAction();
并删除data-action
并将表单设置回默认值,则可以正常运行。
如何修复错误并实施我的脚本?
答案 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;
}
});
然后你可以在调用当前代码时调用它。