2014-03-04 40 views
0

我目前有一個動態變化的表單。我正在使用所有的文本輸入,但他們都應該只接受數字。輸入類型的Jquery表單驗證

$("#result-form").validate({ 
      rules: { 
       .text: { 
       required: true, 
       digits: true 
       } 
      }, 
      messages: { 
       .text:{ 
       required: " Please enter a score!", 
       digits: " Please only enter numbers!" 
       } 
      }, 
      submitHandler: function(form) { 
       form.submit(); 
      } 
     }); 

目前我嘗試驗證使用上述但不起作用。有任何想法嗎?

+0

顯示動態創建元素的代碼。 – Sparky

回答

2

你不能做這樣的...

$("#result-form").validate({ 
    rules: { 
     .text: { // <-- MUST only be a NAME attribute 
      required: true, 
      digits: true 
     } 
    }, 
    .... 

當使用.validate()方法宣告你的規則,你只能使用name屬性申報。


如果你動態創建表單元素,規則只能改變或使用the .rules('add') method應用。您可以在之後立即調用創建新元素,並且可以使用您希望的任何jQuery選擇器對其進行定位。

此代碼會將這些規則動態應用於頁面上的所有type="text"字段。

$("#result-form").validate({ // initialize plugin 
    // other rules and options 
}); 

$('input[type="text"]').each(function() { 
    $(this).rules('add', { 
     required: true, 
     digits: true, 
     messages: { 
      required: " Please enter a score!", 
      digits: " Please only enter numbers!" 
     } 
    }); 
}); 

工作演示:http://jsfiddle.net/2U68C/

注意

  • 必須包裹.rules()在一個jQuery .each如果/每當選擇器可以包含多個元素。如果你沒有做到這一點,只有第一個匹配的元素將被驗證。

  • 必須確保所有表單輸入元素被考慮用於驗證包含獨特name屬性。這是插件如何跟蹤輸入。如果你沒有做到這一點,只有第一個匹配的元素將被驗證。


旁註

你不需要這個在所有...

submitHandler: function(form) { 
    form.submit(); 
} 

這已經是默認行爲。實際上,form.submit()與插件內部的代碼相同。換句話說,在這種情況下,您不需要撥打submitHandler。如果/需要超越或增加時,您只需要使用它,例如ajax()

+0

我試過這個,併爲最初的工作,但任何新創建的不驗證。任何想法爲什麼?我目前正在使用您提供的鏈接中的代碼。 –

+0

@adamcarlin,創建新元素後,必須調用'rules()'方法。 – Sparky

-1

使用name而不是class

rules: { 
    nameoftextbox: { 
     required: true, 
     digits: true 
    } 
} 

使用類使用它:

jQuery.validator.addClassRules("classname", { 
    required: true, 
    digits: true 
}); 
+0

id可能會更改,因爲我可以通過按按鈕添加需要驗證的元素。 –

+1

答案的前半部分在技術上是不正確的。 [你只能使用'name'屬性在'.validate()'方法](http://jqueryvalidation.org/reference/)中聲明規則。不是'id',不是'class',除了'name'外沒有其他任何東西。 – Sparky

+0

該死!我一定誤解了文檔。感謝您的更正! +1 – GuyT

-1

您可以在輸入標籤中添加「需要的數字」的屬性,然後執行:

var validator = $("#result-form").validate(); 
validator.form(); 

這也將讓你具體選擇哪個文本框是必需的。 對於進一步的閱讀我建議你閱讀http://jqueryvalidation.org/documentation/