1

我的日期选择器似乎有问题。这是我拥有的当前代码:

jQuery:

$("txtDate").datepicker({
showOn:"both",
buttonImage:"calendar.png",
buttonImageOnly:true,
onClose: function() {
// do something here
}
});

HTML:

<asp:TextBox id="txtDate" Runat="server" />

这可以正常工作,直到用户在选择日期后从文本框中删除一个字符。例如,如果用户选择 01-01-2013,然后删除最后一个数字,即 3,则在此之后的所有其他日期选择将丢失最后一个数字,直到选择不同的年份。

我该如何阻止这种情况发生?所以基本上,如果用户从选定的日期删除任何字符,再次选择相同的日期或任何其他日期不应导致最后一个字符丢失。

4

2 回答 2

1

首先,$("txtDate").datepicker({...})将定位一个名为“txtDate”的元素(<txtDate></txtDate)。jQuery 选择器就像 CSS 选择器一样工作,为了通过它来定位一个元素,id你需要在它前面加上一个#:

$("#txtDate".datepicker({...});

其次,根据工作区的设置方式,ASP.NET 通常会在 ID 的开头添加一些随机字符,以确保它在整个页面中保持唯一。这意味着实际的标记最终会看起来类似于:

<input id="ct100_ct109_txtDate" ... />

出于这个原因,您可能需要定位元素 ID 以外的其他内容,或者通过 ASP.NET 将 ID 传递给 JavaScript。

--

我认为Asif 的评论可能是解决您问题的最佳方法:只需将您的文本框设置为readonly防止其内容被用户直接修改。在 ASP.NET 中,这是通过以下方式完成的ReadOnly

<asp:TextBox id="txtDate" Runat="server" ReadOnly="true" />
于 2013-10-07T09:10:16.210 回答
1

如果用户删除数据,您可以清除文本字段,例如:

$("your_input_element").datepicker({
   showOn:"both",
   buttonImage:"calendar.png",
   buttonImageOnly:true,
   onClose: function() {
       // do something here
   }
}).keyup(function(e) {
    if(e.keyCode == 8 || e.keyCode == 46) {
        $.datepicker._clearDate(this);
    }
});
于 2013-10-07T09:13:30.770 回答