2013-06-25 42 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