经过太多的谷歌搜索和搜索stackoverflow我的答案,我没有成功。如果这是重复的话,我很抱歉。
我有一个只显示时间的日期选择器。我希望在下拉变换事件中在军事和标准时间之间切换。
我的尝试是这样的:
function militarytoggle(element)
{
timetype = $("#military").val();
if(timetype == "military")
{
$('.time').datetimepicker({
timeOnly: true,
timeFormat: 'HH:mm'
});
}
else if(timetype == "standard"){
$('.time').datetimepicker({
timeOnly: true,
timeFormat: 'hh:mm TT'
});
}
}
编辑:我正在使用的日期时间方法(当前正在工作)在文档就绪时呈现:
$('.time').datetimepicker({
timeOnly: true,
dateFormat: '',
timeFormat: 'hh:mm TT'
});
我只想在事件上更改timeFormat。
有人会认为这会有用,除了冗余。我到底在做什么?
先谢谢大家!
答案 0 :(得分:1)
你的一个if语句写成
if($(timetype == "military")
另一个
else if(timetype == "standard")
首先,前者有未公开的括号。但是,一个使用$而另一个不使用$。其中只有一个可以是正确的语法(我想的是后者)。
同样,您使用
$('.time').datepicker
在一个地方
$('.time').datetimepicker
在另一个。同样,其中只有一个可能是正确的使用方法。
编辑:从下面的评论中添加:
如果datetimepicker方法是构造函数,则在创建页面后再次调用它可能实际上不会更改现有控件的格式。
此外:
您应该检查日期时间选择器窗口小部件的文档(或者如果没有好文档的源代码),以查看是否存在更改现有控件的显示格式的方法(或者如果格式是公共属性你可以直接分配它。如果没有,那么初始化和隐藏一个版本可能是最好的方法,尽管你也可以回邮件到服务器,并且有一些服务器端代码使用传递的参数来渲染页面datetimepicker设置为所需的格式。
答案 1 :(得分:0)
我通过为每个表单添加军事和标准时间字段来解决此问题。然后,我切换禁用的属性以及显示CSS,而不是尝试更改datetimepicker。
然后我将datetime选择器绑定到文档就绪的所有字段。
function militarytoggle(element)
{
timetype = $("#military").val();
if(timetype == "military")
{
$(".standard").prop("disabled",true).css("display","none");
$(".military").prop("disabled",false).css("display","block");
}else if(timetype == "standard"){
$(".standard").prop("disabled",false).css("display","block");
$(".military").prop("disabled",true).css("display","none");
}
}
这看起来很糟糕,如果其他人有更清洁的解决方案,我会接受它作为答案。