检查功能不是工作变量意味着不变

时间:2016-05-22 19:06:38

标签: jquery

你好我在jQuery中有一个寄存器脚只会验证一个字段,除了我创建变量检查的最后一部分并将其含义设置为0之外,一切正常。检查一切是否正常它会变为1,如果不是0,最后如果!=到0则显示下一个按钮div。即使我正确地填写了那些字段,它也没有显示,这可能意味着意义保持不变,因为如果我将变量含义设置为1,我声明了,则按钮出现。这是我的脚本代码:

<script type="text/javascript">    
        //password validation ==================================
        var check = 0;
        $(document).ready(function() {
            $('input[name*="password"]').keyup(validatepass);
        });

        function validatepass(){
                var password = $('input[name="password"]').val();
                var repassword = $('input[name="repassword"]').val();
                var isValid = /^[a-zA-Z0-9]*$/.test(password);
                var length = password.length;

                if (isValid && (length > 4) && (length < 16)){
                    if(password == repassword){
                        $('input[name="password"]').attr('class', 'valid');
                        $('input[name="repassword"]').attr('class', 'valid');
                        check = 1;
                    } else {
                        $('input[name="repassword"]').attr('class', 'invalid');
                        check = 0;
                    }

                    if(password == ""){
                        $('input[name="password"]').attr('class', 'invalid');
                        $('input[name="repassword"]').attr('class', 'invalid');
                        check = 0;
                    } else {
                        $('input[name="password"]').attr('class', 'valid');
                        check = 1;
                    }

                } else {
                    $('input[name="password"]').attr('class', 'invalid');
                    $('input[name="repassword"]').attr('class', 'invalid');
                    check = 0;
                }
        }
        //username validation ========================
         $(function () {

            jQuery('#username').on('input', function () {

                $("#username").removeClass();

                var username = $(this).val();
                var isValid = /^[a-zA-Z0-9]*$/.test(username);
                var length = username.length;
                if (isValid && (length > 4) && (length < 16)){
                    $("#username").addClass("valid");
                    check = 1;
                } else {
                    $("#username").addClass("invalid");
                    check = 0;
                }
            });
        });
        //Email validation-------------------------------
        $(function () {

            jQuery('#email').on('input', function () {

                $("#email").removeClass();

                var username = $(this).val();
                var isValid = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(username);
                if (isValid){
                    $("#email").addClass("valid");
                    check = 1;
                } else {
                    $("#email").addClass("invalid");
                    check = 0;
                }
            });
        });
        /// button show if everything is ok 
        $(document).ready(function() {
            if(check != 0){
                $("#loginsubmitbutton2").show();
            }
        });



    </script>

1 个答案:

答案 0 :(得分:1)

我不得不重做你的一些代码,看看整个小提琴:

  

https://jsfiddle.net/nkq8gc8z/4/

我做的主要事情是:

在每个输入事件中,检查表单中存在的<input>字段数量是否与类<input>的{​​{1}}字段数量相同。因为如果是这种情况,所有字段都经过验证,您可以显示按钮。

这意味着不再需要valid变量。

你主要做错的是这段代码:

check

它检查$(document).ready(function() { if(check != 0){ $("#loginsubmitbutton2").show(); } }); 变量是否不是0 AS SOON AS 页面加载。您在脚本顶部将check设置为0,这意味着当代码的这部分运行时,始终为0,因此按钮永远不会显示。