我正在做一个项目,情况是,客户必须输入详细信息,在他输入详细信息后,使用java脚本(确认对话框),我显示所有重要的细节进行验证,然后当他按确定时,表单被提交。
这是我做的,但似乎它不起作用...需要帮助...
(按取消后..对话框不断出现..最糟糕的部分是即使我选择了取消,表单最终也提交)
(我已经删除了其他细节...
<script type="text/javascript">
function validateMyForm()
{
var X=confirm("ARE DETAILS CORRECT ??");
if(!X)
{
alert("validation failed false");
returnToPreviousPage();
return false;
}
else
{alert("validations passed");
return true;}
}
</script>
<form name="frm" action=<?php print "new_update_attendence.php"; ?> method="POST"
id="content" onsubmit="return validateMyForm();">
大写很重要 ALOT!
var x=confirm("ARE DETAILS CORRECT ??");
if(!X) // change to if(!x)
对于问题的第二部分,您可以这样做:
<script type="text/javascript">
function validateMyForm()
{
var X=confirm("ARE DETAILS CORRECT ??");
if(!X)
{
setTimeout((function(){ window.location.reload(); }), 500);
return false;
}
else
{
return true;
}
}
</script>
X
必须为小写:
if(!x)
{ ...
我发现你过去使用过jQuery。在jQuery中,return false
会阻止表单一起提交。这是因为jQuery捕获该返回值(false
)并将其转换为eventObject.preventDefault(); eventObject.stopPropagation();
而return false
,没有jQuery只执行第一个(阻止该事件的默认操作)。事件仍然冒泡/传播。
将 HTML 更改为 onsubmit="return validateMyForm(event);">
以获取对事件对象的访问权限。然后,在 JavaScript 中:
function validateMyForm(e)//e should hold the event
{
e = e || window.event;//except for older IE versions(?), which we correct here
//do whatever, if the form shouldn't be submitted:
if (!confirm("ARE DETAILS CORRECT ??"))
{
if (e.preventDefault)
{//chrome, FF, opera, ...
e.preventDefault();
e.stopPropagation();//<-- important line here
return false;
}//cruddy IE clients
e.returnValue = false;
e.cancelBubble = true;//<-- stop event in its tracks
return false;
}
}
这应该可以做到。