2013-06-25 46 views
3

我在這裏強調例如:在jqueryui上設置'選項'DatePicker清除文本框的值?

http://jsfiddle.net/aDxeE/

基本上,一個單獨的事件(在施工不知道)需要設置"option","maxDate"在日期選擇器控制。這會「清除」真正煩人的文本框值,因爲最初的構建不會。

任何人都可以提供一個解決方案?

編輯:

更改線路5:

$("#myinput").datepicker("destroy"); 
$("#myinput").datepicker({minDate:new Date(), maxDate: new Date()}); 

使得它的工作如預期,但它是一個嚴重混亂的方法。

+0

@AtifMohammedAmeenuddin我使用的是Firefox ...你告訴我,當頁面加載文本框的值仍然是'dd-mm-yyyy'? – maxp

回答

2

這是格式問題。您的初始值dd-mm-yyyy與日期選擇器默認格式不匹配。要解決此問題,請將初始值設置爲正確的格式,並在創建日期選擇器時將格式指定爲dateFormat

Fiddle

更改爲:

<input id="myinput" type="text" value="01-01-1970" /> 

和:

//construct datepicker 
$("#myinput").datepicker({minDate:new Date(), dateFormat : "dd-mm-yy"}); 
//later on, a seperate event changes the maxDate property 
//but this 'clears' the existing value in the textbox! 
$("#myinput").datepicker("option","maxDate", new Date()); 
+0

設置爲'dd-mm-yyyy'的值只是默認文本的一個例子,不如說'hello world'。展現同樣的問題。請參閱http://jsfiddle.net/aDxeE/7/ – maxp

+0

當您更新maxDate選項時,將忽略當前值以查看它是否滿足最小和最大要求,它不是有效日期,因此被刪除。對於無效日期的默認選項,您可以使用'placeholder =「dd-mm-yyyy」'屬性,或在其旁邊放置一個標籤。 – MrCode

+0

我不知道'佔位符'屬性,對我來說是全新的!謝謝! – maxp

0

儘量給它$(document).ready(function(){..});

//construct datepicker 
$(document).ready(function(){ 
$("#myinput").datepicker({minDate:new Date()}); 
//later on, a seperate event changes the maxDate property 
//but this 'clears' the existing value in the textbox! 
}); 
$("#myinput").datepicker("option","maxDate", new Date()); 

檢查JSFiddle

FYI:使用佔位符代替價值placeholder="dd-mm-yyyy"

+0

這是行不通的 - 你意識到第7行在第3行之前並沒有做任何事情 – maxp

0

如何手動再次設置呢?

var d = $("#myinput").val(); 
$("#myinput").datepicker("option", "maxDate", "+2d").val(d); 
1

你可以這樣做:

$("#myinput").datepicker('destroy').datepicker({maxDate:new Date()}); 
  • 完全刪除日期選擇器功能。這會將元素返回到其初始狀態。
  • 再次設置maxdate選項重新啓動日期選擇器。

FIDDLE DEMO

UPDATE

格式化爲可讀性目的的代碼: -

$("#myinput").datepicker("destroy"); 

$("#myinput").datepicker({ 
    minDate: new Date(), 
    maxDate: new Date() 
}); 
+0

這是唯一可行的例子,根據我的編輯看起來有點凌亂! – maxp

+0

我喜歡這個例子,並且我將它標記爲答案,尤其是爲了向後兼容,如果它不適用於HTML 5'佔位符'屬性。 – maxp

0

這個問題已經在這裏找到答案:https://stackoverflow.com/a/8945264/2050459

您需要設置日期第一個槽代碼(使用setDate)或打開日期選擇器(用戶交互)。

這裏是你如何與代碼做到這一點:fiddle

$("#myinput").datepicker({ 
    minDate: new Date() 
}); 
$("#myinput").datepicker("setDate", new Date()); 

在您的例子,嘗試打開日期選擇器,然後觸發一個事件來設置的maxDate,你會發現輸入也不會因爲設置了活動日期而被清除。

+0

你似乎誤解了這個問題。 – maxp

+0

您的輸入被清除的原因是因爲沒有設置日期。我實際上是在向你解釋你的問題背後的原因。我只是告訴你如何使用datepicker API解決問題,而不使用任何黑客。 – rusln

-1

Jqueryui DatePicker清除文本框的值?

myinput = ID of datapicker 

$("#myinput").val(''); 
+0

請修復格式 – valignatev