Listview (asp.net) 中的 Datepicker(Jquery),代码隐藏 (vb.net)

Datepicker(Jquery) in Listview (asp.net), Code Behind(vb.net)

提问人:Ann 提问时间:4/14/2023 更新时间:4/14/2023 访问量:73

问:

我在列表视图中有一个文本框,它接收来自DatePicker(Jquery)的输入。现在,我必须验证该文本框中的日期/输入。 我的代码的逻辑是这样的: 用户将通过单选按钮选择购买哪一个。 如果用户选择 [Mango],则会出现日期的文本框以及 datepicker jquery 的日历图标。现在,用户将选择[生效日期]的日期。Datepicker 完美地做到了这一点,但我不知道如何验证用户是否选择了正确的日期,因为它应该在数据库提供的日期范围内。例如,芒果季节,生效日期应该只从 2023 年 5 月开始,如果用户选择 2023 年 4 月 13 日,则会触发警告,提示她应该选择另一个日期。

我以为我在文本框更改其值时尝试过,但这只有在用户单击键盘上的回车键时才会触发。一旦日期选择器在文本框中输入值,我需要验证输入。请问我该怎么做?我在代码隐藏上使用 vb.net。

部分标记:

    <td valign="middle" style="white-space: nowrap; text-align:center;">
          <%# CheckNull(Eval("EFF_DATE"))%>
          <ASP:Textbox runat="server" ID="dtEffectiveDate" CssClass="dateSelector"
                                    MonitorChanges="true" 
                    OnTextChanged="dtEffectiveDate_TextChanged" />                                   
                                
    </td>

部分脚本:

$("<%=listView.ClientID %> tr").each(function () {
    $('.dateSelector').datepicker();
});

出于示例目的:ListView Image

JavaScript jQuery asp.net vb.net

评论


答:

1赞 Albert D. Kallal 4/14/2023 #1

不是 100% 清楚为什么你不只使用 TextMode=“date”(你不需要 jQuery 日期选择器)。

但是,这是任何文本框吗?

您可以添加/拥有/设置 ontextchanged 事件。但是,要让它在更改时“自动”触发?您需要添加以下内容:

                <asp:Textbox runat="server" ID="dtEffectiveDate" 
                    CssClass="dateSelector"
                    MonitorChanges="true"
                    OnTextChanged="dtEffectiveDate_TextChanged"
                    AutoPostBack="true"            
                    />                                   

我也不知道这里的“MonitorChanges”是什么???

因此,上述代码的隐藏现在可以是:

Protected Sub dtEffectiveDate_TextChanged(sender As Object, e As EventArgs)

    Dim dtEffctive As TextBox = sender
    Dim lvRow As ListViewItem = dtEffctive.NamingContainer

    Dim txtTree As Label = lvRow.FindControl("lblTree")

    ' code here to get the data in question


End Sub

因此,上面显示了如何拾取当前行 - 从当前行中获取触发 changed 事件的其他控件值。

但是,您将需要 autopostback = true,这对于您想要“回发”页面的任何文本框都是必需的。

如果您不回发页面(使用 autopost-back = true),则在提交时将触发 ontext changed 事件,但这可能不是您要查找的。

因此,要触发文本框的事件,与按钮不同,您必须将 autopostback = “true” 添加到文本框中。

评论

0赞 Ann 4/14/2023
是的,自动回发是我所缺少的。是的,我不希望 [Enter] /Down 键触发验证,我希望它是自动的。再次感谢您对我的帮助。