2014-08-29 1 views
1

После слишком большого количества поисковых запросов и поиска stackoverflow для моего ответа я не увенчался успехом. Поэтому я сожалею, если это дубликат.Изменение формата jQuery datetimepicker на событие

У меня есть datepicker, который отображает только время. Я хочу переключиться между военным и стандартным временем на выпадающем событии обмена.

Мои попытки были чем-то вроде этого:

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' 
     }); 
    } 
} 

EDIT: Метод DateTime Я использую (который в настоящее время работает) наносится на документ, готовый:

$('.time').datetimepicker({ 
timeOnly: true, 
    dateFormat: '', 
    timeFormat: 'hh:mm TT' 
}); 

Я только хочу изменить timeFormat на событие.

Можно было бы подумать, что это сработает, избыточность в стороне. Что на земле я делаю неправильно?

Заранее благодарен всем!

ответ

1

Один из ваших утверждений, если это написано в

if($(timetype == "military") 

другой как

else if(timetype == "standard") 

Прежде всего, первый из них имеет незаконченный скобку. Но также, один использует $, а другой - нет. Только один из них может быть правильным синтаксисом (я думаю, что позже).

Аналогично, можно использовать

$('.time').datepicker 

в одном месте и

$('.time').datetimepicker 

в другой. Опять же, только один из них, вероятно, правильный метод для использования.

Edit: добавляемые комментарии ниже:

Если метод DateTimePicker является конструктором, назвав его снова после того, как страница была создана не может реально изменить формат существующего элемента управления.

Далее:

Вы должны проверить документацию (или исходный код, если нет хорошей документации) от даты и время захватывающего виджета, чтобы увидеть, если есть способ для изменения формата отображения существующего элемента управления (или если формат является общедоступным, вы можете назначить его напрямую). Если этого не происходит, то наличие двух версий, инициализированных и скрывающих один, вероятно, лучший способ сделать это, хотя вы также можете отправить сообщение назад на сервер и иметь код на стороне сервера, который использует переданный параметр для отображения страницы с datetimepicker установлен в нужный формат.

+0

Это были опечатки, упреки для улова, к сожалению, не решение моей проблемы :((спасибо, хотя!) Следует отметить, что я пробовал каждый из обоих из вышеперечисленных ... – steve

+0

@steve В этом случае Я подозреваю, что метод datetimepicker на самом деле не делает то, что, по вашему мнению, делает. Можете ли вы связать то, что datetimepicker точно вы используете? – HamHamJ

+0

отредактирован в соответствии с запросом. Еще раз спасибо за вашу помощь! – steve

0

Я решил эту проблему, добавив военное и стандартное поле времени для каждой формы. Затем я переключаю свойство disabled, а также дисплей 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"); 
    } 
} 

Это кажется взломанным, если у кого-либо есть более чистое решение, я приму его в качестве ответа.