gpt4 book ai didi

java - 验证失败时阻止操作

转载 作者:行者123 更新时间:2023-12-01 01:48:23 25 4
gpt4 key购买 nike

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

  1. 密码强度(使用实时检查,而不是 validate() 函数)
  2. 确认密码(使用 validate() 函数,而不是实时检查)
  3. 电子邮件验证(使用实时检查,而不是 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);
}

一切工作正常,但当这三个验证(Confirm_Password、Password_Strength、Email)中的任何一个在点击提交按钮后失败(Confirm_Password 验证除外)时,我无法阻止页面转发。我也想限制电子邮件和密码强度的操作。意味着只要验证失败,就会将焦点设置到该字段。请注意,validate() 函数仅用于Confirm_Password。

最佳答案

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

1) 使用 PrimeFaces

2) 使用p:remoteCommand而不是按钮的操作

3) 在 p:commandButton 中使用 onclick 而不是 action,您将在其中调用将进行验证的函数,并且只有验证成功才调用远程命令。

关于java - 验证失败时阻止操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com