如何传递日期选取器更改事件

How to pass datepicker change event

本文关键字:事件 选取 何传递 日期      更新时间:2023-09-26

我正在检查从 Html.TextBox for helper 的 jquery 中使用日期选择器控件输入的日期:

<%=Html.TextBoxFor(c => Model.mydate, new { @class = "datepicker", maxlength = 10, @onBlur = "chkDate"})%>

文本框的日期选取器掩码显示为 MM/DD/YYYY 。因此,我的脚本检查下划线并显示错误。 如果用户忽略日期选择器并尝试徒手输入日期,则此方法有效,但如果使用了日期选择器,则无效。 选择日期时,传递给脚本的值仍然是下划线,没有值。 这是我的脚本:

 <script type="text/javascript">
    $(document).on("blur", "input[name=mydate]",
    function chkDate() {

        var len = $("input[name=mydate]").val().length;
        var date = $("input[name=mydate]").val();
        var month = date.slice(0, 2);
        var day = date.slice(3, 5);
        var year = date.slice(6, 10);
        alert("chkBirthday " + month);
        if (month == '__') {
            document.getElementById("MainContent_ErrorMessage").visibility = 'visible';
            document.getElementById("MainContent_ErrorMessage").innerHTML = 'No date has been entered.  Please enter a date';
        }
    });

有一个事件 onChange 与日期选取器相关联。 这是我应该使用的吗? 如果是这样,如何在帮助程序中指定它以及需要进行哪些脚本更改?

试试这个,

$(document).on("change", "input[name=mydate]",function (){
     var len = $(this).val().length;
     var date = $(this).val();
     var month = date.slice(0, 2);
     var day = date.slice(3, 5);
     var year = date.slice(6, 10);
     alert("chkBirthday " + month);
     if (month == '__') {
         document.getElementById("MainContent_ErrorMessage").visibility = 'visible';
         document.getElementById("MainContent_ErrorMessage").innerHTML = 'No date has been entered.  Please enter a date';
     }    
});

假设你使用的是流行的JQuery UI的日期选择器,奇怪的是它们不是授权事件,而是可以处理此事件的回调。请参阅"选择"或"关闭"。