2010-01-20 190 views
1

因此,我正在构建一个应用程序,其中数据从数据库中返回,其中日期可以是多种不同的格式,即'2008','05/22/99','8/20/2004' 。并且可以说,例如,用户想要通过点击“编辑”按钮来编辑日期(2009)。那么在编辑窗口中,它应该显示一个盒子里已经存在'2009'年的输入框。然而,问题是,datepicker看到2009年,不认可这种日期格式作为默认值,而是插入今天的日期。jQuery datepicker自动更改输入值

这显然是一个巨大的问题,当有人去编辑日期时,不可避免地会引起疯狂的混乱。

有没有办法让这种行为停止?我在设置中缺少一些简单的东西吗?

对不起,我没有网上的例子,非常感谢任何人有任何想法如何克服这一点。

感谢,

杰夫

+1

这是默认行为,我相信。如果datepicker给出的是年份,那么你会如何默认? 1/1/[年]? – Jason 2010-01-20 02:37:39

+0

我希望datepicker一旦打开就默认为今天的日期或01/01/2009。无论用户如何轻松地进行设计。但是输入类型='文本'字段中的VALUE应该保留之前的任何内容。即2009年,而不是今天的日期。 – Jeff 2010-01-20 02:43:50

回答

0

你应该使用jQuery来设置日期选择器后的文本框的值已经连接到文本框。

$('txtBox').datepicker(); 
$('txtBox').val('2009'); 
or 
document.getElementById('txtBox').value = '2009'; 

只要您在附加日期选择器代码后执行此操作,您的预设值就不会被覆盖。

+0

我以为同样的事情,但当我尝试它没有奏效。尽管Firebug显示“2009”,但提醒文本框的当前值返回“未定义”。不知道为什么... – Jeff 2010-01-20 03:30:32

1

通常它不会改变它..

http://jqueryui.com/demos/datepicker/的例子不会做你的描述。因此,它可能是你使用的选项,或者你已经截获喜欢的OnClose事件的..

我们看一些代码..

+0

是的默认行为不改变文本框的值,直到用户明确选择日期。 http://jsbin.com/aroca – Anurag 2010-01-20 03:01:44

+0

该示例在datepicker初始化时尚未具有输入文本框的值。 (快速示例) 数据库生成html /表:

​​2009​​EDIT
日期:动作
使用jQuery: 功能编辑(OBJ) { 变种tbody = $(obj).parent()。find('td'); var editTextBox =“”; } $('。jDate')。datepicker(); 现在,当editTextBox在页面的另一部分绘制时,它的值不会是我设置的值,而是今天的日期。 – Jeff 2010-01-20 03:22:30

+0

yikes。对不起,上面的格式... – Jeff 2010-01-20 03:31:28

1

最好的情况是存储在数据库中的日期完全一样的格式。接下来的最佳案例是,在服务器上重新格式化日期或使用javascript,以便datepicker的日期都是相同的格式,这样每个人的生活都变得更加轻松。

Javascript has plenty of ways to manipulate dates

+0

我完全不同意。最好的例子是存储日期,但用户输入日期。如果用户想要将日期存储为2009,那么我们可以说他们错了,并显示与他们输入的日期不同的日期。显然,尽管这会让程序员的生活变得更加令人沮丧。但是,这是良好的应用用户设计的必要条件。 – Jeff 2010-01-20 03:28:59

+0

我会同意,如果一个日期不是一个完整的目标数据。以不同的方式写日期对于它的意义绝对没有任何意义,所以在这种情况下,好的“应用程序用户设计”就是采取不一致并使其一致。如果你真的想处理这个问题,请自己解决。 – carillonator 2010-01-20 05:09:33

0

显然,在初始化datepicker后设置了日期选择器选项后,会出现此问题。

此链接早些时候发布工作正常,但这并不并说明我的问题:http://jsbin.com/axipe

一个错误,也许?

感谢大家的建议和意见!

干杯,

杰夫

0

原始文档的例子并不提供设定输入值,这里使用的OnClose设定输入值的例子。请检查jsfiddle.net/ray202/XdMkQ/