编辑最终:OMG,我终于找出了什么出错!我几乎不能相信,我正在测试这个8小时不停,最后......我仍然不确定什么,怎么样,为什么,但似乎由于某种原因(我认为)我不能对于重新变量有不同的值,因为有不同的字段,1次,它是一个文本,另一次是一个数字,例如,如果我为每个可能的正则表达式定义不同的变量而不是重新定义它,那里没问题! o.OjQuery,表单验证,验证每个字段后的消息
我已经发布,我现在使用的回复下,这个帖子
感谢这么多的人有花一些时间阅读和思考这个代码!
如果有人对它出错的想法,我很感兴趣!
原题:
找不到逻辑,为什么这不会工作..我有,我想验证,每个字段应该验证的onblur形式:完美的作品,在提交应验证每个字段:工作完美,当出现某种错误时,它应该显示一条消息并返回false:不起作用。由于某种原因,提交函数不希望在.each之后执行任何操作,它甚至不会工作当我没有做任何错误检查,只想在每个.each后警告。
编辑:在提及一些小错误之后,它不幸仍然不会工作..这里是总代码,包括检查字段功能(错误信息在荷兰语,如果你想知道;))
编辑2:经过更多的测试,似乎它不是因为checkform函数,但与正则表达式测试(如果(!re.test(fieldvalue)))得到的代码卡住..不能找到问题虽然..任何想法将不胜感激!
编辑3:为什么不会与正则表达式的checkfield函数不循环与.each ??任何人??我真的很绝望.. -.-的作品
function trim(str){
return str.replace(/^\s+|\s+$/g, '');
}
function checkfield(field){
var output = 'validate' + $(field).attr("name");
var type = $(field).attr("type");
if ($(field).hasClass('required')){var required = 1;}
//set patterns for different types
if (type == 'text') { var re = /^[A-Za-z0-9 -._]+$/;}
if (type == 'number') { var re = /^[\d -.]+$/;}
if (type == 'email') { var re = /^[\w-_.][email protected][\w]+\.[\w]*\w\w$/;}
if (type == 'date') { var re = /^[0-3][0-9][\/-][0-1][0-9][\/-](19|20)[0-9][0-9]$/;}
var fieldvalue = trim(field.value); //trim value of input
if (required == 1 && emptyString.test(fieldvalue)) { //is required field filled in? if no, return false
$('#'+output).html('Invullen van onderstaand veld is verplicht!');
field.focus();
return false;
}
else if (fieldvalue != "" && type != '' && !re.test(fieldvalue)) { //input according to pattern? if no: place message, return false
if (type == 'email') {$('#'+output).html('Dit is geen correct e-mailadres!');}
else if (type == 'date') {$('#'+output).html('Dit is geen correcte datum!');}
else {$('#'+output).html('U gebruikt tekens die niet zijn toegestaan!');}
field.focus();
return false;
}
else if (fieldvalue != ""){ //when no error and filled in, empty messagebox, return true
$('#'+output).html('');
return true;
}
else if (required == 0 && fieldvalue == ""){//is empty but not required, empty messagebox, return true
$('#'+output).html('');
document.getElementById(output).innerHTML = '';
return true;
}
}
$(document).ready(function(){
$("#userform input").blur(function(){
checkfield(this);
})
$("#userform").submit(function(){
var errs = 0;
$("#userform input").each(function(){
if (!checkfield(this)) errs +=1;
});
if (errs>0) {alert('one or more fields are not correctly filled in'); return false;}
})
});
新的代码!
如果有人喜欢用一个简单的表单验证,随时;)(空格不完全不错,但那是怎么一回事,因为我的代码编辑器具有比本网站不同的规则。)
function trim(str){
return str.replace(/^\s+|\s+$/g, '');
}
function checkfield(field){
var output = 'validate' + $(field).attr("name");
var type = $(field).attr("type");
if ($(field).hasClass('required')){var required = 1;}
var re_text = /^[A-Za-z0-9 -._]+$/;
var re_number = /^[\d -.]+$/;
var re_email = /^[\w-_.][email protected][\w]+\.[\w]*\w\w$/;
var re_date = /^[0-3][0-9][\/-][0-1][0-9][\/-](19|20)[0-9][0-9]$/;
var emptyString = /^\s*$/ ;
var error = 0;
var fieldvalue = trim(field.value); //trim value of input
if (required == 1 && emptyString.test(fieldvalue)) { //is required field filled in? if no, return false
$('#'+output).html('Invullen van onderstaand veld is verplicht!');
field.focus();
return false;
}
else if (!emptyString.test(fieldvalue)){
if (type == 'text'){
if (!re_text.test(fieldvalue)) {
$('#'+output).html('U gebruikt tekens die niet zijn toegestaan!');
error = 1;
field.focus();
return false;
}
else {$('#'+output).html(''); return true; }
}
if (type == 'number'){
if (!re_number.test(fieldvalue)) {
$('#'+output).html('U gebruikt tekens die niet zijn toegestaan!');
error = 1;
field.focus();
return false;
}
else {$('#'+output).html(''); return true; }
}
if (type == 'email'){
if (!re_email.test(fieldvalue)) {
$('#'+output).html('Dit is geen correct e-mailadres!');
error = 1;
field.focus();
return false;
}
else {$('#'+output).html(''); return true; }
}
if (type == 'date'){
if (!re_date.test(fieldvalue)) {
$('#'+output).html('Dit is geen correcte datum!');
error = 1;
field.focus();
return false;
}
else {$('#'+output).html(''); return true; }
}
}
else if (required == 0 && emptyString.test(fieldvalue)){//is empty but not required, empty messagebox, return true
$('#'+output).html('');
document.getElementById(output).innerHTML = '';
return true;
}
}
$(document).ready(function(){
$("#userform input").blur(function(){
checkfield(this);
})
$("#userform").submit(function(){
var errs = 0;
$("#userform .form").each(function(){
if (!checkfield(this)) errs +=1;
//checkfield(this);
});
if (errs>0) {alert('one or more fields are not correctly filled in'); return false;}
//alert(errs); return false;
})
});
不应该停止工作的警报,但你有错误那里与错误= +1而不是errs + = 1。 – 2012-02-20 13:26:55