在kendo datepicker中添加验证会导致recusrive调用

时间:2017-04-04 00:12:41

标签: kendo-ui datepicker focus kendo-asp.net-mvc blur

我有一个日期选择器并验证它的模糊事件。如果验证失败,我将向用户显示一条消息并再次关注日期选择器。但它变得递归。

消息始终显示。除非她杀死页面,否则用户无法获得循环。

(function() {
  $("#kendoDatePicker").kendoDatePicker();

  $("#kendoDatePicker").on("blur", function() {
    if ($(this).data("kendoDatePicker").value() > new Date()) {
      alert("Date cannot be greater than today. Please re-enter.");
      var datepicker = $(this).data("kendoDatePicker");
      datepicker.element.focus();
    }
  });
})();
<script src="http://cdn.kendostatic.com/2012.2.913/js/kendo.all.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="demo-section k-content">
  <input id="kendoDatePicker" value="04/04/2017" style="width: 100%" />
</div>

小提琴在这里:https://jsfiddle.net/Hd47F/312/

1 个答案:

答案 0 :(得分:0)

嗯,你自己说过你在模糊事件中再次关注了日期选择器。所以,它当然会变成递归的。您可以将验证逻辑放在表单提交事件中,而不是使用datepicker的blur事件,或者在验证后不要将焦点放在datepicker中。

顺便说一下,您甚至不需要验证。您可以将datepicker的最大日期设置为今天的日期,以便用户以后甚至无法选择日期。这也将使它更加用户友好。