2

我在使用 c# 网页的 ASP.NET 中有一个 StartDate 和 EndDate。当用户填写开始日期时 - 我希望将其复制到 enddate 直到用户更改结束日期。我们怎么可能做到这一点。我的代码如下

<asp:PlaceHolder ID="m_eventform" runat="server" Visible="true">
<script type="text/javascript">
    $(function () {
        $('#<%= m_eventDate.ClientID %>').datepick({ dateFormat: 'yyyy-mm-dd' });
        $('#<%= m_eventEndDate.ClientID %>').datepick({ dateFormat: 'yyyy-mm-dd' });
    });
</script>
<form id="eventForm" runat="server">

<div class="formrow">
    <label>
      Start Date</label>
    <asp:TextBox ID="m_eventDate" runat="server" />
    <asp:RequiredFieldValidator ID="m_eventDateRequired" runat="server" ControlToValidate="m_eventDate"
        ErrorMessage="Please enter a start date" Display="Dynamic" />
    <asp:RegularExpressionValidator ID="m_eventDateReg" runat="server" ValidationExpression="^\d{4}[\-]?((((0[13578])|(1[02]))[\-]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-]?(([0-2][0-9])|(30)))|(02[\-]?[0-2][0-9]))$"
        ControlToValidate="m_eventDate" Display="Dynamic" ErrorMessage="Please enter the date in YYYY-MM-DD format" />
</div>

  <div class="formrow">
    <label>
        End Date</label>
    <asp:TextBox ID="m_eventEndDate" runat="server" />
    <asp:RequiredFieldValidator ID="m_eventEndDateRequired" runat="server" ControlToValidate="m_eventEndDate"
        ErrorMessage="Please enter an end date" Display="Dynamic" />
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ValidationExpression="^\d{4}[\-]?((((0[13578])|(1[02]))[\-]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-]?(([0-2][0-9])|(30)))|(02[\-]?[0-2][0-9]))$"
        ControlToValidate="m_eventEndDate" Display="Dynamic" ErrorMessage="Please enter the date in YYYY-MM-DD format" />
</div>


</form>

4

2 回答 2

1

日期选择器有一个可以使用的 onselect 函数:
$('#<%= m_eventDate.ClientID %>').datepick( { dateFormat: 'yyyy-mm-dd', onSelect : function(dateText,inst){ if(!endDateSelected){ $('#<%= m_eventEndDate.ClientID %>').val(dateText); } } });


$('#<%= m_eventEndDate.ClientID %>').datepick( { dateFormat: 'yyyy-mm-dd', onSelect : function(dateText,inst){ endDateSelected = true; } });
这将使您不必编写额外的 C# 代码。将 onSelect 函数添加到 enddate 选择器将防止每次用户更改开始日期时不断更新结束日期。

您也可以查看此帖子以了解类似情况: jQuery UI Datepicker - onSelect get the selected date +3 days

于 2013-07-17T15:56:14.663 回答
0

像这样修改你的标记:

<asp:TextBox ID="m_eventDate" runat="server" onblur="copyDate();" />

然后添加这个 JavaScript:

function copyDate() {
    $('#<%= m_eventEndDate.ClientID %>').val($('#<%= m_eventDate.ClientID %>').val);
}

推荐

如果您使用的是 .NET 4.0,我建议您利用ClientIDMode文本框的新属性。你可以这样设置:

<asp:TextBox ID="m_eventDate" runat="server" ClientIDMode="Static" />

然后在 JavaScript 中你可以像这样引用它们:

$('#m_eventDate') ...

因为id命名容器不会在服务器端更改它们。

于 2013-07-17T15:54:13.100 回答