onsubmit方法不会停止提交

Rit*_*ita 9 html javascript forms onsubmit

onsubmit不行.我的想法是放置一些必填字段,为了实现这一点,我onsubmit在HTML中使用调用JavaScript函数的表单中的方法.

这个想法是,如果所有必填字段都填写完毕,javascript函数将返回true并继续转到页面/control/Cadastro.php.否则,如果任何必填字段为空,它将返回false并且不会移动到页面/control/Cadastro.php,保持在当前页面中直到为真.

不幸的是,false如果没有按预期填充所有必填字段,函数会返回,但它仍然会移动到页面/control/Cadastro.php,即使它不应该.

我将切断一些代码,使我的观点可以察觉.

<!DOCTYPE html>
<html>
    <head>
        <script>
            function ValidateRequiredFields()
            {
                var message = new String('\nCampos obrigatórios:\n');
                var flag=new Boolean(1);
                var x=document.forms["theForm"]["nr_processoCA"].value;
                if (x==null || x==""){
                    message += '\nNº do processo\n'; 
                    flag = new Boolean(0);
                } 
                if (flag == false){
                    alert(message);
                }
                return flag;    
            }
        </script>
    </head>
    <body>
        <form name="theForm" onsubmit="return ValidateRequiredFields()" method="post" action="../control/Cadastro.php"> 
            Nº do Processo: <br>
            <input type="text" name="nr_processoCA" class="input-xlarge">
            <br>
            <div class="row-fluid" style="text-align:center;">
                <input type="submit" class="btn btn-primary btn-large" value="Gravar">
            </div>   
         </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Ano*_*oop 12

你应该preventDefault在你的onsubmit函数里面使用.我修改了你的代码:

function ValidateRequiredFields()
{
    var message = new String('\nCampos obrigatórios:\n');
    var flag=new Boolean(1);


    var x=document.forms["theForm"]["nr_processoCA"].value;
    if (x==null || x==""){
        message += '\nNº do processo\n'; 
        flag = new Boolean(0);
    }

    if (flag == false){
        if(event.preventDefault){
            event.preventDefault();
        }else{
            event.returnValue = false; // for IE as dont support preventDefault;
        }
        alert(message);
    }

    return flag;
}
Run Code Online (Sandbox Code Playgroud)

DEMO