2013-10-07 59 views
1

我似乎有日期選擇器的問題。下面是當前代碼我有:jQuery的datepicker刪除問題

的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,那麼之後的所有其他日期選擇將會丟失最後一位數字,直到選擇不同的年份。

如何阻止這種情況發生?所以基本上,如果用戶從所選日期刪除任何字符,再次選擇相同的日期或任何其他日期不應導致最後一個字符丟失。

+3

您可以使文本框'readonly',強制用戶從日曆只選擇日期... – Asif

+0

不記得是這樣,但只讀給了我在通過的問題,與我的網站的某些其他部分不能夠讀取文本框內的數據時,它是設置爲只讀。 – oshirowanen

回答

1

首先,$("txtDate").datepicker({...})將針對名爲「txtDate」(<txtDate></txtDate)的元素。 jQuery選擇工作就像CSS選擇器,並且以目標通過其id的元素,你需要用#前綴是:

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

其次,根據您的工作空間是如何設置的,ASP.NET通常會將somewhat random characters添加到ID的開頭,以確保它在整個頁面中保持唯一。這意味着,實際的標記會顯得沿着線的東西:

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

出於這個原因,你可能需要定位的是元素的ID以外的東西通標識加入的JavaScript通過ASP.NET。

-

我覺得Asif's comment可能是你的問題的最佳解決方案:只需設置文本框爲readonly以防止其內容是由用戶直接修改。在ASP.NET中,這是使用ReadOnly完成:

<asp:TextBox id="txtDate" Runat="server" ReadOnly="true" /> 
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); 
    } 
});