0

jQuery でフォームを検証するための簡単なスクリプトを作成しました。送信ボタンは次のとおりです。

<button type="submit" id="submitCrear"  name="submitCrear">Confirm</button> ---->Cancel button
<button type="submit" value="cancelar"  name="cancelar" id="btnCancelar">Cancel</button> ---->Confirm button

[キャンセル] ボタンが押された場合は、検証を行わずにフォームを送信する必要があります。確認ボタンで反対のことが起こるはずです。

しかし、これは私が理解していないことです: 確認ボタンを押すと、検証プロセスは正常に開始されますが、キャンセルボタンを押すと、すべての検証が完了するまでフォームは送信されません (isValidForm 変数が「true」になります)。

<script type="text/javascript"> 
    var isValidForm;
    $(document).ready(function() {              
        $('#btnCancelar').click(function () {
            $('form').submit();
        });

        $('#submitCrear').click(function () {
            $('form').submit(function(){
                return validarForm();
            });
        });
    });

    function validarForm(){
        isValidForm = true;
        $("input:text").each(function(i) {
            if(this.value == ''){
                if (!$("#errorMessage"+i).length > 0)
                    addErrorMessage(this, i, '*REQUERIDO');
                isValidForm = false;
            }else{
                removeErrorMessage(this, i);
            }
        });
        $("input:password").each(function(i) {
            if(this.value == ''){
                if (!$("#errorMessage"+(i+999)).length > 0)
                    addErrorMessage(this, (i+999), '*REQUERIDO');
                isValidForm = false;
            }else{
                if(($(this).attr('id') == 'rePassword_r') && ($(this).val() != $("#password_r").val())){
                    if ($("#errorMessage"+(i+999)).length > 0){
                        removeErrorMessage(this, (i+999));
                        addErrorMessage(this, (i+999), 'The password doesn't match.');
                    }
                    isValidForm = false;
                }else{
                    removeErrorMessage(this, (i+999));
                }
            }
        });
        return isValidForm;
    }

    function addErrorMessage(element, indice, mensaje){
       ...

    }

    function removeErrorMessage(element, indice){
        ...
    }
</script>   

検証プロセスが開始された場合でも、[キャンセル] ボタンを使用してフォームを送信するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

1

2 つのボタンと次の jQuery があります。

    $(document).ready(function() {              
    $('#btnCancelar').click(function () {
        $('form').submit();
    });

    $('#submitCrear').click(function () {
        $('form').submit(function(){
            return validarForm();
        });
    });
});

jQuery の後半部分は、フォームが送信されると、ボタンのクリックではなく、フォームの送信に検証を割り当てたため、検証されることを意味します。そのため、両方のボタンで起動されるようになりました。

設計上、送信タイプのボタンはフォームを送信しませんか? したがって、jQuery を次のように変更するだけではいけません。

 $(document).ready(function() {              

    $('#submitCrear').click(function () {
            return validarForm();
    });
});
于 2012-04-30T14:38:40.963 に答える