2010-10-16 54 views
0

我有兩個用戶進行選擇的日期選擇器。然後在選定的時間間隔中添加一個輸入文本框。我努力讓jQuery Validate插件爲生成的文本框工作。看起來好像只有第一個被驗證。jQuery驗證運行時控件

當頁面加載我添加了一個自定義的驗證方法,併成立了形式驗證:

$(document).ready(function() { 
$.validator.addMethod("validHoursInDay", function(value, element) { 
    if (this.optional(element)) { 
     return this.optional(element); 
    } 
    var regex = /\d((\.|,)\d)?/; 
    var isDecimalNumber = regex.test(value); 
    if (isDecimalNumber) { 
     var parsedNumber = parseFloat(value.replace(",", ".")) 
     return parsedNumber >= 0 && parsedNumber <= 24; 
    } 
    else { 
     return false; 
    } 
}); 
$("#aspnetForm").validate({ 
    debug: true, 
    onfocusout: false, 
    submitHandler: function(form) { 
     submitabscence(); 
    }, 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      var message = 'Got some erros for you'; 
      $.each(validator.errorList, function(index, value) { 
       value.element.style.borderColor = 'red'; 
      }); 
      ShowErrorBox(message); 
     } 
    } 

}); 
}); 

創建文本框後,我選擇它們並添加規則

$("#week-overview :input").each(function() { 

    $(this).rules("add", { 
     validHoursInDay : true, 
     required: true, 
     messages: { 
      required: "Fill in a number", 
      validHoursInDay: "Valid Hours in Day" 
     } 
    }); 
}); 

只有第一個文本框似乎被驗證。

+0

你能粘貼你的HTML代碼嗎? – Diego 2010-10-18 10:51:00

+0

另外,您粘貼的第二個代碼在哪裏?在創建所有輸入之後它是否真的被執行?您是否試圖提醒$(「#week-overview:input」)。length? – Diego 2010-10-18 11:59:08

+0

我能解決它。通過給每個生成的輸入一個唯一的名稱解決了問題! – BennyM 2010-10-23 08:00:51

回答

0

jQuery驗證插件似乎需要每個驗證輸入的唯一名稱。在做這種驗證時應該如此。