Java 验证失败时阻止操作
专家们,我在这里不需要什么帮助。我有一个jsp页面,其中将完成三个验证: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:
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呢