jQuery 日期选择器验证问题

Posted

技术标签:

【中文标题】jQuery 日期选择器验证问题【英文标题】:jQuery Date Picker Validation Problems 【发布时间】:2012-11-28 22:33:16 【问题描述】:

我正在尝试验证用户选择日期的两个输入框 - 我已经设法限制用户选择上一个日期,如果他们选择第一个文本框作为今天的日期,则下一个输入框必须提前一天(未来的日期)

在提交时,我试图让它验证,所以如果您不选择其中一个输入框,它会给您一条错误消息。

<asp:Label ID="lblPickupDate" runat="server" Text="Pick-up Date" CssClass="lblPickup"></asp:Label>
<input type="text" class="datePicker" id="validBeforeDatepicker" value="Please select a date" name="pickupdate" /> <span class="ui-icon ui-icon-calendar"></span>

<asp:Label ID="lblReturnDate" runat="server" Text="Return Date" CssClass="lblReturnDate"></asp:Label>
<input type="text" class="datePicker" id="validAfterDatepicker" value="Please select a date" name="returdate" /> <span class="ui-icon ui-icon-calendar"></span>

$(function () 
    $("#validBeforeDatepicker").datepicker(
        showOn: "button",
        buttonImage: "/assets/img/calendar.gif",
        buttonImageOnly: true,
        minDate: 0,
        required: true,
        message: "This is a required field",
        dateFormat: 'dd-mm-yy',
        onClose: function() $(this).valid();
    );
);

$(function () 
    $("#validAfterDatepicker").datepicker(
        showOn: "button",
        buttonImage: "/assets/img/calendar.gif",
        buttonImageOnly: true,
        minDate: +1,
        required: true,
        message: "This is a required field",
        dateFormat: 'dd-mm-yy',
        onClose: function() $(this).valid();
    );
);

我已经将 required 设置为 true,所以如果你错过它不应该抛出验证错误吗?

表单所在的站点:http://www.rentruck.co.uk

我也看过这个,但似乎无法复制它http://keith-wood.name/uiDatepickerValidation.html

【问题讨论】:

【参考方案1】:

您可以为validating the jQuery UI Datepicker 尝试这两个验证库。

Working Example for H5F

CSS

.valid 
  background: green;
  color: #fff;

.error 
  background: red;
  color: #fff;

​

HTML

<form id="h5ftest">
    <input type="date" required pattern="\d2\/\d2\/\d4">
</form>​

jQuery

$(function() 
  H5F.setup( $( "#h5ftest" ) );

  $( "[type=date]" ).datepicker(
    onClose: function() 
      $( this ).focus().blur();
    
  );
);​

或jQuery Validate plugin 的工作示例

CSS

.valid 
  background: green;
  color: #fff;

.error 
  background: red;
  color: #fff;
​
​

HTML

<form id="jQueryValidateTest">
    <input type="date" required>
</form>​

jQuery

$(function() 

  $( "#jQueryValidateTest" ).validate();

  $( "[type=date]" ).datepicker(
    onClose: function() 
      $( this ).valid();
    
  );
);​

【讨论】:

完美!对我来说很好 :) 我使用了所有 ASP.NET 控件,而不是使用一些 HTML 控件。 非常感谢您通过上述解决方案让我过得愉快。虽然解决方案很好,但我无法在 IE 中工作。如何在 IE 中进行这项工作?有没有可能? @chridam @gkrishy 您能否创建一个具有您确切问题的新问题? @chridam ***.com/questions/30161644/… 检查此链接。我在那里发布了我的新问题。做一些必要的事。提前致谢。【参考方案2】:

View source 部分的Datepicker site 中,建议他们在onClose 事件中手动检查日期范围:

$(function() 
    $( "#from" ).datepicker(
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) 
            $( "#to" ).datepicker( "option", "minDate", selectedDate );
        
    );
    $( "#to" ).datepicker(
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) 
            $( "#from" ).datepicker( "option", "maxDate", selectedDate );
        
    );
);

【讨论】:

改变了表单的外观-我这样做的方式是限制用户选择现在已排序的上一个日期-我试图在用户单击提交按钮时得到它它需要显示错误消息,但我不能在 datepicker 输入字段上使用 runat="server",因为它不起作用

以上是关于jQuery 日期选择器验证问题的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Datepicker 和 Jquery 验证

jQuery 多日期选择器问题

使用日期时间选择器进行日期和时间验证 (ASP.Net MVC Core v1.1)

jQuery 日期选择器。 2个日期选择器。限制范围。默认日期 当前日期

日期选择器验证 WPF

Jquery datepicker:验证日期 mm/dd/yyyy