0

我沒有使用jquery.ui的日期選擇器一個,因爲我需要來選擇多個日期,所以我用Keith Wood's日期選擇在EditorTemplate我的日期字段:JQuery的日期選擇器驗證不工作的多個日期與MVC

@model Nullable<DateTime> 
    @{ 
     string name = ViewData.TemplateInfo.HtmlFieldPrefix; 
     string id = name.Replace(".", "_"); 
     string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty; 
    }   
    @Html.Hidden("", dt, new { @class = "datefield", @type = "date", @id = id, style = "display:none;" }) 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#@id').datepick({ 
       renderer: $.datepick.themeRollerRenderer, 
       multiSelect: 31, 
       onSelect: function (dates) { 
        var value = ''; 
        for (var i = 0; i < dates.length; i++) { 
         value += (i == 0 ? '' : ',') + $.datepick.formatDate(dates[i]); 
        } 
        $('#@name').val(value) 
        var form = $(this).parents().find('form')[0]; 
        // form.validate(); // this causes error (Object doesn't support property or method 'validate') whats up with that? 
       } 
      }); 
     });  
    </script> 

這裏是我的數據類的日期時間字段中,我的ViewModel繼承的定義:

[Required] 
    [DataType(DataType.Date)] 
    public Nullable<DateTime> StartDate { get; set; } 

這裏是客戶端驗證剪斷,它被返回了無效的狀態:

form.validate({ 
     rules:{ 
      StartDate: { 
       required: true 
       ,dpDate: true 
      } 
     }, 
     messages: { 
      StartDate: 'Please choose at least one date' 
     } 
    }); 

    if (form.valid()) { // never reached } 

所以現在我正在最後確定這個內聯datepicker的最後一點驗證。正如你所看到的,我有一個由datepicker填充的隱藏字段,它包含有效的日期,但逗號分隔且不會轉換爲日期時間。當我選擇一個日期時它是有效的。有沒有一種通用的解決方案來驗證分隔數據是一種類型?

我基本上是循環使用多個日期的數據庫調用,但仍想驗證分隔的數據是DateTime類型。

問候,

布蘭登

+0

還要注意,刪除現有的自定義form.validate({...})函數不會以任何方式更改結果,它似乎被覆蓋並且不起作用。 – m4chine

+0

另一個說明,我試圖改變我的模型**公開名單> StartDate {get;組; } **產生與以前相同的結果 – m4chine

回答

0

jQuery插件需要jQuery對象。

如果你的表格ID是myForm的你會使用這樣的插件:

$('#myForm').validate({ ... });

$('#myForm').valid();

+0

這顯然不是問題,我可以使用單一日期來驗證,但問題是隱藏字段的值爲「mm/dd/yyyy,mm/dd/yyyy「這顯然不是一個有效的日期,我需要驗證來解析逗號分隔值。只是爲了踢,我確保整個表單是一個jQuery對象,而不是依靠純JavaScript,$(「#trCreate form」).validate({...})產生相同的結果。 – m4chine