2010-01-15 78 views
0

我期待上市我错误的登录页面之前添加自定义消息之前:jQuery验证自定义消息列表错误

“哎呀,你忘了输入以下内容:” +“用户名”,“密码” (如果两个不进入)

“哎呀,你忘了输入以下内容:” + “用户名”(如果只是用户名没有进入)

$(document).ready(function(){ 
$("#loginForm").validate({ 

    errorLabelContainer: $('#RegisterErrors'), 
    messages: { 
     username: "Username", 
     password: "Password" 
       } 
    }); 
     });  

有了这个在我的HTML

<div id="RegisterErrors"> 

我想我的问题是更多的“你怎么用逗号分隔的错误?”我想将错误保留在一行,并用逗号分隔,而不是用子弹列表形式?你可以使用包装属性?

输出的HTML: 错误1,错误2(如果双双失踪) 错误1(如果只有1丢失) 错误2(如果只有2丢失)

回答

2

你的问题不是很具体,但对于最近的一个项目,我做了这样的事情:

function validate_form(form){ 
    valid = true; 
    error = ""; 
    with(form){ 

     error = validateName(first_name); 
     if(error!=""){ 
      $("#fn_error").html(error); 
      valid=false; 
     }else{ 
      // clear error 
      $("#fn_error").html(""); 
     } 

     error = validateName(last_name); 
     if(error!=""){ 
      //last_name.focus(); 
      $("#ln_error").html(error); 
      valid=false; 
     }else{ 
      // clear error 
      $("#ln_error").html(""); 
     } 

     error = validateEmail(email); 
     if (error!=""){ 
      $("#email_error").html(error); 
      //email.focus(); 
      valid=false; 
     }else{ 
      // clear error 
      $("#email_error").html(""); 
     } 
    } 
    return valid; 
} 

function trim(s){ 
    return s.replace(/^\s+|\s+$/, ''); 
} 

function validateEmail(fld){ 
    var error=""; 
    var tfld = trim(fld.value);      // value of field with whitespace trimmed off 
    var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/ ; 
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; 

    if (fld.value == "") { 
     fld.style.background = '#FFCCCC'; 
     //error = "You didn't enter an email address.\n"; 
     error = "This field is required."; 
    } else if (!emailFilter.test(tfld)) {    //test email for illegal characters 
     fld.style.background = '#FFCCCC'; 
     error = "Invalid Email address."; 
    } else if (fld.value.match(illegalChars)) { 
     fld.style.background = '#FFCCCC'; 
     error = "Email contains illegal characters.\n"; 
    } else { 
     fld.style.background = 'White'; 
    } 
    return error; 
} 

// field_name should be "first name" or "last name" 
function validateName(fld){ 
    var error=""; 
    var tfld = trim(fld.value);      // value of field with whitespace trimmed off 

    if (fld.value == "") { 
     fld.style.background = '#FFCCCC'; 
     error = "This field is required."; 
    }else { 
     fld.style.background = 'White'; 
    } 
    return error; 
} 

相反设置和清除错误的,你可以,如果存在错误建立错误字符串。然后根据是否存在错误设置并清除一个错误。跟着我?

UPDATE 为了用逗号分隔的错误,如上面提到的,你将建立错误字符串:

error = "oops you forgot to fill in "; 
bad_fields = []; 
if (form[name] == ""){ 
    bad_fields.push("name"); 
} 
if (form[email] == ""){ 
    bad_fields.push("email"); 
} 
error_string = error + bad_fields.join(","); 
$("#error_div").html("<span class='error'>"+error_string+"</span>"); 

这主要是伪代码,但你的想法。