2010-01-15 81 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>"); 

這主要是僞代碼,但你的想法。