首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onsubmit方法不会停止提交

问onsubmit方法不会停止提交
EN

Stack Overflow用户
提问于 2012-09-27 22:03:36
回答 6查看 24.7K关注 0票数 9

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

这个想法是,如果所有必填字段都填好了,javascript函数将返回true,然后转到页面/control/Cadastro.php。否则,如果任何必填字段为空,它将返回false,并且不会移动到页面/control/Cadastro.php,而是停留在当前页面中,直到为true。

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

我将删减一些代码,以使我的观点可感知。

代码语言:javascript
复制
<!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>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-27 22:15:16

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

代码语言:javascript
复制
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;
}

DEMO

票数 13
EN

Stack Overflow用户

发布于 2012-09-27 22:20:48

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

此代码示例可以工作:

代码语言:javascript
复制
<!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>
票数 3
EN

Stack Overflow用户

发布于 2012-09-27 22:08:56

如果是真的,我建议放一个按钮来运行表单:

代码语言:javascript
复制
 <input type='button' onclick="if (ValidateRequiredFields()) document.forms['theForm'].submit();" />

仅此而已……

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12623244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档