Java 验证失败时阻止操作

Java 验证失败时阻止操作,java,jquery,jsp,jquery-validate,Java,Jquery,Jsp,Jquery Validate,专家们,我在这里不需要什么帮助。我有一个jsp页面,其中将完成三个验证: 密码强度(使用实时检查,而不是validate()函数) 确认密码(使用validate()函数,而不是实时检查) 电子邮件验证(使用实时检查,而不是validate()函数) 通过keyUp()函数和相应的jQuery在此处执行实时检查: $(document).ready(function(){ $("#register-form").validate({ rules: { password_again:

专家们,我在这里不需要什么帮助。我有一个jsp页面,其中将完成三个验证:

  • 密码强度(使用实时检查,而不是validate()函数)
  • 确认密码(使用validate()函数,而不是实时检查)
  • 电子邮件验证(使用实时检查,而不是validate()函数)
  • 通过
    keyUp()
    函数和相应的jQuery在此处执行实时检查:

     $(document).ready(function(){
    
     $("#register-form").validate({
     rules: {
       password_again: {
          equalTo: "#password"
            }
                        }
     });
    
    
     $("#validate").keyup(function(){
    
            var email = $("#validate").val();
    
            if(email != 0)
            {
                if(isValidEmailAddress(email))
                {
                    $("#validEmail").css({
                        "background-image": "url('validate/validYes.png')"
                    });
                } else {
                    $("#validEmail").css({
                        "background-image": "url('validate/validNo.png')"
                    });
                }
            } else {
                $("#validEmail").css({
                    "background-image": "none"
                });         
            }
    
        });
    
                $('#password').keyup(function(){
        $('#result').html(checkStrength($('#password').val()));
    }); 
    
    function checkStrength(password){
    
    //initial strength
    var strength = 0;
    
    //if the password length is less than 6, return message.
    if (password.length < 6) { 
        $('#result').removeClass();
        $('#result').addClass('short');
        return 'SHORT';
    }
    
    //length is ok, lets continue.
    
    //if length is 8 characters or more, increase strength value
    if (password.length > 7) strength += 1;
    
    //if password contains both lower and uppercase characters, increase strength value
    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  strength += 1;
    
    //if it has numbers and characters, increase strength value
    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  strength += 1;
    
    //if it has one special character, increase strength value
        if (password.match(/([!,%,&,@,#,$,^,*,?,_,~])/))  strength += 1;
    
    //if it has two special characters, increase strength value
        if (password.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1;
    
    //now we have calculated strength value, we can return messages
    
    //if value is less than 2
    if (strength < 2 ) {
        $('#result').removeClass();
        $('#result').addClass('weak');
        return 'WEAK';  
    } else if (strength == 2 ) {
        $('#result').removeClass();
        $('#result').addClass('good');
        return 'GOOD';
    } else {
        $('#result').removeClass();
        $('#result').addClass('strong');
        return 'STRONG';
    }
    }
    
    
    });
    
    function isValidEmailAddress(emailAddress) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    }
    
    $(文档).ready(函数(){
    $(“#登记表”)。验证({
    规则:{
    再次输入密码。\u:{
    equalTo:“#密码”
    }
    }
    });
    $(“#验证”).keyup(函数(){
    var email=$(“#验证”).val();
    如果(电子邮件!=0)
    {
    if(isValidEmailAddress(电子邮件))
    {
    $(“#validEmail”).css({
    “背景图像”:“url('validate/validines.png')”
    });
    }否则{
    $(“#validEmail”).css({
    “背景图像”:“url('validate/validNo.png')”
    });
    }
    }否则{
    $(“#validEmail”).css({
    “背景图像”:“无”
    });         
    }
    });
    $('#password').keyup(函数(){
    $('#result').html(checkStrength($('#password').val());
    }); 
    函数校验强度(密码){
    //初始强度
    var强度=0;
    //如果密码长度小于6,则返回消息。
    如果(password.length<6){
    $(“#结果”).removeClass();
    $('#result').addClass('short');
    返回“短”;
    }
    //长度可以,让我们继续。
    //如果长度为8个字符或更多,请增加“强度”值
    如果(password.length>7)强度+=1;
    //如果密码同时包含小写和大写字符,请增加强度值
    如果(密码匹配(/([a-z].[a-z])|([a-z].[a-z])/)强度+=1;
    //如果有数字和字符,则增加“强度”值
    if(password.match(/([a-zA-Z])/)和&password.match(/([0-9])/)强度+=1;
    //如果它有一个特殊字符,增加强度值
    如果(密码匹配(/([!,%,&,@,#,$,^,*,?,,~])/)强度+=1;
    //如果有两个特殊字符,则增加“强度”值
    如果(password.match(/(.[!,%,&,@,#,$,^,*,?,,~].[!,%,&,@,#,$,^,*,?,,~])/)强度+=1;
    //现在我们已经计算了强度值,可以返回消息了
    //如果值小于2
    如果(强度<2){
    $(“#结果”).removeClass();
    $('结果').addClass('弱');
    返回“弱”;
    }否则,如果(强度==2){
    $(“#结果”).removeClass();
    $('#result').addClass('good');
    返回“好”;
    }否则{
    $(“#结果”).removeClass();
    $('#result').addClass('strong');
    返回“强”;
    }
    }
    });
    函数isValidEmailAddress(电子邮件地址){
    (2)目前(以下以下::::::::[[[[w-[w-[[w-[[[w-[[[w-[[[w-[[[w-]+)*)))除了除了除了上述两个新的RegExp((((((“[[[[[w-\w-\w-\s][[[[[[3-\s-\s[s-\s[s-[s][[[[[s][[[3]]]]]的)的)的)号号号))))))))在目前,((((((((((()))))目前((([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[|[0-9]{1,2}\)((25[0-5]{2[0-4][0-9]{2}{0-9]{1,2}\){2}(25[0-5]{2[0-4][0-9]{1[0-9]{2}{1,2}}})/);
    返回模式.test(emailAddress);
    }
    
    所有工作正常,但我无法阻止页面转发时,这三个验证(确认密码,密码强度,电子邮件)中的任何一个在点击提交按钮后失败,除了确认密码验证。我还想限制电子邮件和密码的操作。表示每当验证失败时,将焦点设置到该字段。
    请注意,
    validate()
    函数仅用于确认密码。

    假设您的问题是如何防止使用jQuery处理数据,如果您发现/知道它们不适合jQuery本身,我建议使用$.ajax函数。使用此功能,您可以选择仅在一切顺利时发送请求。例如:

    $(document).ready(function(){
        // Here your controls about password strenght, email, etc...
        $('#FORM-ID').submit(function(){
            var url = "YOUR_ACTION";
    
            // YOUR CONTROLS
            if( isOK() ) {
                $.ajax({
                    type: "POST",
                    url: url,
                    // You can use any other way to pass the data,
                    //    my favorite is to serialize with jQuery function
                    data: $("#FORM-ID").serialize(),
                    success: function(data){
                         // Success Message
                    } else {
                         alert(data);
                    }
                 });
                 return false;
            } else {
                 // Display Error message
            } 
        });
    });
    
    您可以找到一个伪示例,同时可以找到$.ajax的官方文档。如果遇到问题,请告诉我;)

    您可以为如下控件编写一个简单的布尔函数:

    function isOk(parameters_to_check){
        if(all_conditions_are_true){
            return true;
        } else {
            return false;
        }
    

    您尚未指定正在使用的JSF实现/库,但假设您希望在JavaScript中执行许多操作,并且您只希望执行JavaScript验证,我建议:

    1) 使用素面

    2) 使用“从”按钮,而不是“从”按钮


    3) 在
    p:commandButton
    中,使用
    onclick
    而不是
    action
    ,在该操作中,您将调用执行验证的函数,并且仅在验证成功时调用远程命令。

    我理解此代码。但我有一个问题。(1) 如果我使用var url=“ServletName”,我想在点击提交按钮后转发到servlet,它能工作吗??(2) 以上代码是否与前一代码附加??(3) 如果是,那么当电子邮件或密码强度验证失败时,它是否总是被阻止??——请讲清楚。我是JQuery新手。请给我你的宝贵建议。谢谢。不幸的是,我从未使用过JSP,所以我无法确切地告诉您如何在jQuery中重定向到servlet;2/3. 可以将控件添加为一个或多个函数,该函数将布尔值返回到if。例如,您创建了一个函数“isOk()”,其中包含您的验证函数,如果一切正常,则返回true,如果不正常,则返回false。我也从未处理过php,即问题。但您可以给我答案,请告诉我:这就是如何转发到php页面的过程&我们可以通过php页面中的一些方法获得所有表单元素值。当然,当用户提交表单时,您可以根据需要使用不同的方法将所有变量传递给php函数。在“some.php”中,您可以找到一个或多个函数,这些函数获取表单传递的变量并对其进行操作。有关如何编写这种类型的代码的示例,请参见本文末尾的此处()。谢谢。它与jsp/servlet相同。我将创建一个返回布尔值的函数。但是如何称之为ajax呢