使用javascript和php阻止表单提交

时间:2012-08-14 13:48:51

标签: php javascript html

我正在研究一个项目,情况是,客户端必须输入详细信息,并在输入详细信息后,使用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();">

3 个答案:

答案 0 :(得分:4)

资本化很重要!

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>

答案 1 :(得分:3)

X必须位于lowerCase中:

 if(!x)
  { ...

答案 2 :(得分:1)

我认为你过去曾经使用过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;
    }
}

应该这样做。