2010-04-22 93 views
2

嗨,我試圖用jQuery驗證插件做幾件事情,似乎卡住在一個地方。jQuery動態驗證

下面是一些代碼:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#myform').validate(); 
     $('#email').rules('add', {required: true, messages: {required: 'email is required'}}); 
     $('#phone').rules('add', {required: true, messages: {required: 'phone is required'}}); 
     $('#validate').click(function(){ 
      $('#result').text($('#myform').validate().form()); 
      return false; 
     }); 
    }); 
</script> 
<form id="myform"> 
<div>email:<input type="text" id="email" /></div> 
<div>phone:<input type="text" id="phone" /></div> 
<div id="result"></div> 

<input id="valdate" type="image" src="images/submit.png" /> 
</form> 

因此我不斷收到一個錯誤的錯誤消息。如果我點擊提交按鈕'電話是必需的'顯示在電子郵件輸入附近,'電子郵件是必需的'沒有顯示出來。

此代碼有什麼問題?

+0

嘗試先添加規則,然後調用$('#myform').validate()。 – 2010-04-22 14:33:33

回答

2

好吧好像我發現了這個問題。

HAVE添加名稱屬性元素無論如何。 在我的示例中,如果爲輸入元素添加適當的名稱,它將很好。

1

以下方法:

<script type="text/javascript"> 
    $(function(){ 
     $('#myform').validate({ 
      rules: { 
       phone: 'required', 
       email: 'required' 
      }, 
      messages: { 
       phone: 'phone is required', 
       email: 'email is required' 
      } 
     }); 
    }); 
</script> 

與添加name屬性的每個輸入字段一起,完美地工作。

2

您可能會考慮下面的內容。閱讀和調試有點清晰。由於您使用的標準規則類似於「必需」,因此除非您想要不同的東西,否則不必指定消息。規則和消息由輸入字段的名稱(例如電子郵件)標識。

errorPlacement選項用於指定消息的位置。您不必包含此選項;默認是將消息追加到輸入字段。但是,如果你有佈局div或需要特殊位置的信息在收音機上,或者你有什麼,這是做這件事的地方。

$(document).ready(function(){ 
    $('#myform').validate({ 
     rules:{ 
     email: "required", 
     phone: {required:true, minlength:7} 
     }, 
     messages:{ //not required as default message for "required" rule makes same text 
     email: "email is required", 
     phone: "phone is required", 
     }, 
     errorPlacement: function(error, element) { //this is where to put positioning rules 
     error.appendTo(element.parent()); //just an example 
     } 
    }); 
}); 
+0

@kpomka:實際上,除了更改字段名稱,我已經有完全相同的代碼已經工作。 – dnagirl 2010-04-22 14:50:59

0

首先嚐試添加規則,然後調用$( '#myForm的')。驗證()

它不會工作。您必須先調用驗證方法。

使用輸入名稱接近

我知道我可以用它作爲名字你上面提到的事情。 但不幸的是,我將不得不使用ID。

內容將不會保持不變。它會根據一些規則而有所不同。所以幾乎每次我都會有不同的頁面。 會有許多不同ID的控件。許多驗證組等。

所以使用「名稱方法」只是不符合我的要求。

任何想法如何使用$(選擇器).rules('add')的方法?

P.S. 我發現下面的例子http://www.coldfusionjedi.com/index.cfm/2009/2/22/Using-jQuery-to-add-form-fields--with-validation,它工作的很不錯,代碼中沒有什麼特別的。

+2

如果你正在生成動態字段,可能你也會生成它們的ID。只需使用相同的名稱值。即'' – dnagirl 2010-04-22 16:10:12