在事件上更改jquery datetimepicker格式

时间:2014-08-29 17:19:44

标签: javascript jquery datepicker timepicker

经过太多的谷歌搜索和搜索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。

有人会认为这会有用,除了冗余。我到底在做什么?

先谢谢大家!

2 个答案:

答案 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");
    }
}

这看起来很糟糕,如果其他人有更清洁的解决方案,我会接受它作为答案。