9

onsubmitは働いていません。私のアイデアは、いくつかの必須フィールドを配置することでした。それを実現するためにonsubmit、JavaScript 関数を呼び出す HTML のフォーム内のメソッドを使用していました。

アイデアは、すべての必須フィールドが入力された場合、javascript 関数が返さtrueれ、 page に移動するというもの/control/Cadastro.phpでした。それ以外の場合、いずれかの必須フィールドが空の場合、返されて page にfalse移動せず/control/Cadastro.php、true になるまで現在のページにとどまります。

false残念ながら、期待どおり、すべての必須フィールドが入力されていない場合、関数は返されますが/control/Cadastro.php、そうでなくても page に移動します。

私の視点を認識できるようにするために、いくつかのコードを切り取ります。

<!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>
4

6 に答える 6

13

preventDefaultonsubmit 関数内で使用する必要があります。私はあなたのコードを変更しました:

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

デモ

于 2012-09-27T14:15:15.743 に答える
3

これを機能させるには、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>
于 2012-09-27T14:20:47.833 に答える
2

true の場合にフォームを実行するボタンを配置することをお勧めします。

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

それで全部です....

于 2012-09-27T14:08:55.893 に答える
1

オブジェクトは、値が false の Boolean オブジェクトであっても、常に true と評価されます。

ブール値を作成する代わりにflag = true、関数の先頭に配置します。flag = false

于 2012-09-27T14:14:11.157 に答える
0

自分に合った答えを探し回った後、解決策を作成することにしました。次のコードでは、別の関数を送信または実行する前に、ネイティブの HTML5 フォーム検証を実行できます (Chrome でテスト済み)。フォームの送信を防ぐために、関数の後に false を返すようにしてください。

<input type="submit" value="Submit" onclick='if (document.getElementById("mainForm").checkValidity()) { submitData(); return false;}' />

于 2016-11-07T02:37:23.277 に答える