0

在 ASP.NET 页面上,我在页面上有一对CalendarExtender(用于 ASP.NET 4.0 的 AJAX 控件工具包)控件作为日期范围。我想要做的是,在用户选择了 的值后,TextCheckInDate填充if为空。TextCheckOutDateTextCheckInDate+ 1TextCheckOutDate

遗憾的是,我的 jQuery 技能还没有达到我想要的水平。我知道我必须创建一个在TextCheckInDate更改时触发的 jQuery 函数,我需要能够读取两个文本框、执行基本的日期运算并写入第二个文本框。实施让我望而却步。多亏了这篇文章,我知道使用date.js进行我的日期算术,包括在下面......

到目前为止我所拥有的:

$("input[id$='TextCheckInDate']").keyup
    (function (e) {
        checkCheckOutDate( $("#TextCheckInDate").val() );
    }
    );


function checkCheckOutDate(checkInDate) {
    var startDate = Date.parse(checkInDate);
    if ($("#TextCheckOutDate").val() == "") {
        $("#TextCheckOutDate").val((1).days().after(startDate));
    }
}
4

2 回答 2

3

你能禁止在日期文本框中输入文本吗?如果是这样,您可以使用以下方法:

<script type="text/javascript">
    function checkInDateChanged(sender, args) {
        var checkInDate = sender.get_selectedDate();

        var checkOutDateExtender = $find("CheckOutdateExtender");
        var checkOutdate = checkOutDateExtender.get_selectedDate();
        if (checkOutdate == null || checkOutdate < checkInDate) {
            checkOutdate = new Date(checkInDate.setDate(checkInDate.getDate() + 1));
            checkOutDateExtender.set_selectedDate(checkOutdate);
        }
    }
</script>
<asp:TextBox runat="server" ID="TextCheckInDate" />
<ajax:CalendarExtender runat="server" ID="CheckInDateCalendarExtender" TargetControlID="TextCheckInDate"
    OnClientDateSelectionChanged="checkInDateChanged" />

<asp:TextBox runat="server" ID="TextCheckOutDate" />
<ajax:CalendarExtender runat="server" ID="CheckOutDateCalendarExtender" BehaviorID="CheckOutdateExtender"
    TargetControlID="TextCheckOutDate" />

在 PreRender 方法中添加以下代码:

TextCheckInDate.Attributes.Add("readOnly", "readonly");
TextCheckOutDate.Attributes.Add("readOnly", "readonly");
于 2011-06-08T08:08:14.903 回答
1

当签入文本框的事件触发时,您应该能够稍微调整您的代码以触发您的checkCheckOutDate()函数。change

$("input[id$='TextCheckInDate']").bind('keyup,change', function (e) {
    checkCheckOutDate( $("#TextCheckInDate").val() );
});


function checkCheckOutDate(checkInDate) {
    var startDate = Date.parse(checkInDate);
    if ($("#TextCheckOutDate").val() == "") {
        $("#TextCheckOutDate").val((1).days().after(startDate));
    }
}

请注意,jQuery 中的许多事件方法(如click()keyup()等)只是bind('click', function() { ... }).

于 2011-06-08T08:17:02.470 回答