2011-01-05 63 views
1

我想使用這個插件:http://docs.jquery.com/Plugins/Validation如何在jQuery中進行客戶端表單驗證?

哪裏#user_new是我的形式ID,這是我的代碼如下所示:

$('#user_new').validate({ 
    rules: { 
     user[username]: "required", 
     user[email]: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user[username]: "Please specify your name", 
     user[email]: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}) 

在這些是我怎麼輸入字段時看呈現頁面時(由Rails的生成):

<input class="clearField curved" id="user_f_name" name="user[f_name]" size="30" type="text" value="First Name" /><br /> 
     <input class="clearField curved" id="user_l_name" name="user[l_name]" size="30" type="text" value="Last Name" /><br /> 
     <input class="clearField curved" id="user_username" name="user[username]" size="30" type="text" value="Username" /><br /> 
     <input class="clearField curved" id="user_password" name="user[password]" size="30" type="password" value="Password" /><br /> 
     <input class="clearField curved" id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" value="Password" /><br /> 
     <input class="clearField curved" id="user_email" name="user[email]" size="30" type="text" value="Email Address" /><br /> 

我只是想先驗證用戶名&電子郵件。然後從那裏拿走。

對於我的生活,我無法弄清楚如何指定使用此插件的語法和規則。

幫助!

EDIT1:這裏是表單標籤的HTML輸出:

<form accept-charset="UTF-8" action="https://stackoverflow.com/users/login" class="user_new" id="user_new" method="post"> 

至於有關調試的問題,當我把它給像這樣:

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     user_username: "required", 
     user_email: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_username: "Please specify your name", 
     user_email: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}); 

我什麼也看不到我的JS安慰。

編輯2:當我清除我的數據登錄字段並按提交時,它不會提交。不知道這是否與實際工作的validate()函數有關。但是我看不到任何消息彈出或類似的東西。

EDIT3:看來這個問題可能是之間的ID &姓名字段被命名不同的脫節。但是,Rails將名稱和ID分配給兩個字段 - 所以不知道如何解決這個問題。

Edit4:我找到了解決辦法。我將它添加到所選答案下的評論中。

+0

@littlechad放什麼validate方法裏面? – marcamillion 2011-01-05 09:07:03

+0

評論編輯:嘗試添加一個容器後,你的輸入標籤,我的意思是添加這裏面的驗證方法:errorPlacement:function(error,element){error.appendTo(element.next());} – littlechad 2011-01-05 09:21:28

+0

btw我在哪裏把那個'errorPlacement'代碼?應該在消息之後的第二個'}之後?或者我應該完全清除規則然後添加它? – marcamillion 2011-01-05 21:12:39

回答

5

我認爲它是因爲「名」屬性的表單值(輸入標籤)不匹配JQuery驗證選項

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     user_username: "required", // should be: "user[username]" 
     user_email: { // should be: "user[email]" 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_username: "Please specify your name", // should be: "user[username]" 
     user_email: { // should be: "user[email]" 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}); 

編輯:看看這個問題,我想他有同樣的問題,你是jquery.validate in cakePHP

EDIT2:編輯它顯示,把容器您輸入的標籤之後,讓我們說

<div id="username_error"></div>//for username error message 

添加該代碼的方式:

$('#user_new').validate({ 
    debug: true, 
    rules: { 
     //rules 
    }, 
    messages: { 
     //messages 
    }, 
    errorPlacement: function(error, element) { 
     if (element.is(":radio")) 
      error.appendTo(element.parent().next());//if its a radio button 
     else if (element.is(":checkbox")) 
      error.appendTo (element.next());//if its a radio button 
     else 
      error.appendTo(element.parent().next()); 
    },//these lines of codes basically telling the jquery.validate plug-in to look for an element after 
}); 

,然後申請一些CSS整齊事情

<style> 
#username_error{ 
    //a little something something 
} 
</style> 

,或者您可以隨時檢查documentation進一步修改

+0

試過這個......但仍然沒有運氣。查看我的問題上的最後一個編輯,查看更新的代碼:| – marcamillion 2011-01-05 08:55:40

+0

這樣做的問題是,當我有用戶[用戶名]時,我在JS控制檯中出現錯誤,提示'意外的令牌[' – marcamillion 2011-01-05 21:08:33

+2

Dude ...非常感謝你。這個問題的答案就是這樣。所以對於那些感興趣的人......正確的答案應該是圍繞字段名稱加引號。在我的情況下,請確保使用由Rails生成的值作爲「名稱」。所以正確的代碼將如下所示:'rules {「user [username]」:「required」,「user [email]」:{required:true,email true}}'WOW ...我很高興我發現了這個解。這一直在困擾着我。我不能夠感謝你。如果你想編輯您的答案,包括這個修改,我認爲未來失意的人會感謝你的:) – marcamillion 2011-01-07 08:12:54

0

不完全確定爲什麼上述不工作我自己。也許別人可以發現它......但同時看看文檔中的調試選項。當你啓用這個選項時你會得到什麼?

1

試試這個:

$('#user_new').validate({ 
    rules: { 
     user_l_name: "required", 
     user_email: { 
      required: true, 
      email: true 
     } 
    }, 
    messages: { 
     user_l_name: "Please specify your name", 
     user_email: { 
      required: "We need your email address to contact you", 
      email: "Your email address must be in the format of [email protected]" 
     } 
    } 
}) 

請確保您在規則中使用和按摩的變量都相同,您輸入ID和姓名。我想說的是,你的輸入ID和名稱必須相同才能工作。

我有同樣的問題,如果這不起作用,讓我知道,所以我可以進一步協助。

快樂編碼!!!!

+0

因此,如果沒有我的名字和id值是確切的,那麼沒有辦法讓它工作? Rails有一種處理表單的有趣方式...所以它會自動爲我創建te id&name字段。我的rails表單字段代碼如下所示:'<%= f.text_field:f_name,:value =>「First Name」,:class =>「clearField curved」%>
'它產生:'
'我有什麼想法可以改變它? – marcamillion 2011-01-05 08:20:19

相關問題