Javascript onsubmit方法没有';不要停止屈服

Javascript onsubmit方法没有';不要停止屈服,javascript,html,forms,onsubmit,Javascript,Html,Forms,Onsubmit,我的onsubmit不工作。我的想法是放置一些必填字段,为了实现这一点,我在一个称为JavaScript函数的HTML表单中使用了onsubmit方法 这个想法是,如果所有必填字段都已填充,javascript函数将返回true,并将转到页面/control/Cadastro.php。否则,如果任何必填字段为空,它将返回false,并且不会移动到页面/control/Cadastro.php,在为真之前一直停留在当前页面 不幸的是,如果未按预期填写所有必填字段,则函数确实返回false,但它仍然

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

这个想法是,如果所有必填字段都已填充,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>

函数ValidateRequiredFields()
{
var message=新字符串('\nCampos obrigatórios:\n');
var标志=新布尔值(1);
var x=document.forms[“theForm”][“nr_processoCA”]值;
如果(x==null | | x==“”){
消息+='\nNºdo processo\n';
标志=新布尔值(0);
} 
如果(标志==false){
警报(信息);
}
返回标志;
}
Nºdo Processo:


我建议放置一个按钮,如果为true,则该按钮将运行表单:

 <input type='button' onclick="if (ValidateRequiredFields()) document.forms['theForm'].submit();" />


仅此而已……

一个对象将始终计算为true,即使它是一个值为false的布尔对象


flag=true
放在函数顶部,然后
flag=false
而不是创建布尔值。

您应该在onsubmit函数中使用
preventDefault
。我修改了你的代码:

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;
}

要实现此功能,您的
ValidateRequiredFields
函数需要返回一个布尔值。然后您应该将该方法附加到
onSubmit
事件。请记住,对于
onsubmit
,您需要使用
return
关键字

此代码示例适用于:

<!DOCTYPE html>
<html>
<head>
<script>
    function ValidateRequiredFields() {
        var message = new String('\nCampos obrigatórios:\n');
        var flag=1;

        var x=document.forms["theForm"]["nr_processoCA"].value;
        if (x==null || x==""){
            message += '\nNº do processo\n'; 
           alert(message);
           return false;
        }
        return true;
    }
</script>
</head>

<body>

<form name="theForm" method="post" action="../control/Cadastro.php" onSubmit="return ValidateRequiredFields()">


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>

函数ValidateRequiredFields(){
var message=新字符串('\nCampos obrigatórios:\n');
var标志=1;
var x=document.forms[“theForm”][“nr_processoCA”]值;
如果(x==null | | x==“”){
消息+='\nNºdo processo\n';
警报(信息);
返回false;
}
返回true;
}
Nºdo Processo:


我也遇到了类似的问题。事实证明,我的验证(嵌套了几个函数)中有一个错误,导致JavaScript在到达返回语句之前退出函数的执行。在这一点上,它将继续提交


我建议任何人找到这个页面,寻找“onsubmit方法不会停止提交”的答案,就是仔细检查验证函数

在四处寻找一个对我有用的答案后,我决定创建一个解决方案。下面的代码允许在提交或运行另一个函数(在Chrome中测试)之前运行本机HTML5表单验证。确保在函数之后返回false,以防止表单提交


不要这么冗长,只需写
var flag=true
flag=false
,idem for
String
:)如果函数内部有错误,则它不会返回false,表单将提交。由于表单已提交,因此您不会看到错误。。。最好先测试函数。这就是
的目的,而不会干扰入侵js。如果验证函数中有任何错误,移动它并不能解决问题。至少您会看到错误。如果它仍然提交,我建议搜索prevetntdefault函数。此外,它的工作也非常出色,只要在它之后单击,从所有浏览器的安全视图来看,它都是正常的。我下面的家伙是对的……请始终重新检查.php中的inout,否则使用小工具的人可能会带来很多麻烦