2013-10-02 34 views
3

我在MVC應用程序頁面上的劍道DatePicker控件:劍道DatePicker的最大值和最小值不是限制文本輸入

@(Html.Kendo().DatePicker() 
    .Name("PlanStartDate") 
    .HtmlAttributes(new { @class = "reportParam" }) 
    .Value(Model.MinDate) 
    .Min(Model.MinDate.ToShortDateString()) 
    .Max(Model.MaxDate.ToShortDateString()) 
) 

注意,我設置.Min和。最大值。這些最小值和最大值正確限制日曆下拉到適當日期範圍:「9/10/2013」​​至「2014年10月9日」。

不幸的是,用戶仍然可以通過使用輸入文本框而不是日曆下拉框來輸入最小和最大日期之外的日期。

我知道我可以添加JavaScript來在控件的kendoValidator對象上創建規則和消息,但是我正在尋找最簡單的,有希望的剃刀解決方案來強制datepicker上的最大和最小範圍,重要的是用戶如何輸入日期。

回答

1

不幸的是,仍然沒有什麼可以在剃刀中設置。我發現的唯一解決方案是在窗口被初始化後將輸入設置爲只讀。這確保用戶不能手動輸入任何日期並且他們使用選取器控件。我試圖通過添加HtmlAttributes來設置剃刀語法中的屬性,但是這與在widget上設置readonly的結果相同,即輸入和選擇器都被禁用。

我原本決定只添加驗證更改的事件,以便不會丟失手動輸入日期的能力,但這不火手動輸入日期時(!)

$(function() { 
      $("#startDate").prop("readonly", "readonly"); 
     }); 

解決方案在這裏找到:http://www.telerik.com/forums/kendo-datepicker-max-and-min-values-not-limiting-text-entry#Mr13l7RaiUeA8Nm9cVo7hQ

0

它也可以,如果你在HtmlAttributes部分

.HtmlAttributes(new { onkeydown = "javascript: return false; " }) 

添加的onkeydown調用這使月份牌r仍然是可點擊的,同時禁用手動用戶輸入。