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

您有两个按钮和以下 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 回答