0

У меня есть устаревшее веб-приложение, которое я пытаюсь немного изменить. Я добавил jQueryUI datetime picker (http://trentrichardson.com/examples/timepicker/) на несколько страниц (привязан к текстовому вводу), чтобы пользователь мог выбрать дату начала/окончания/время. У меня он настроен на использование «select» вместо «ползунков» для выбора часа/минуты. Это отлично работает во всех браузерах, которые я тестировал, за исключением IE8 (не тестировался в более ранних версиях IE). В IE8 очень медленно реагировать на выбор даты. Вот Javascript код, который создает палитру DATETIME:Динамический javascript с условными комментариями IE?

$("#dtpStart").datetimepicker({ 
    controlType: "select", 
    timeFormat: "HH:mm", 
    stepMinute: 15 
}); 

Если удалить controlType: "select", линию, по умолчанию виджет с помощью ползунков, и делать это со скоростью до его использования в IE8. Поэтому я бы хотел включить эту строку только в том случае, если пользователь использует IE> 8. Таким образом, IE8 и ранее получат слайдеры, в то время как IE9 + и не-IE браузеры получат поля выбора.

Я думал, что смогу это сделать, используя условные комментарии IE, но я не могу заставить его работать. Я никогда не использовал их раньше, хотя и, возможно, не делаю это правильно. Я испробовал варианты:

$("#dtpStart").datetimepicker({ 
    <!--[if ! IE]><!--> controlType: "select",<!--<![endif]--> 
    timeFormat: "HH:mm", 
    stepMinute: 15 
}); 

не имеет успеха; Я все еще получаю слайдеры, независимо от того, какой браузер я использую. Я предполагаю, что это потому, что я в середине определения datetimepicker, когда я пытаюсь использовать условные комментарии?

Любые предложения по способу сделать это?

+0

Я не верю, что вы можете использовать условные комментарии в тегах сценария. Однако [ответы на этот вопрос] (http://stackoverflow.com/questions/4169160/javascript-ie-detection-why-not-use-simple-conditional-comments) предлагает множество альтернатив. – Danny

ответ

0

Вы можете попробовать Conditional Compilation:

var datetimePickerObject = { 
    controlType: "select", 
    timeFormat: "HH:mm", 
    stepMinute: 15 
}; 
/*@cc_on 
delete datetimePickerObject.controlType; 
@*/ 
$("#dtpStart").datetimepicker(datetimePickerObject); 
+0

Но правильный способ - использовать условные комментарии в теге 'html' с добавлением' ie8-lte' className и проверить его 'var ie8_lte = document.documentElement.className.indexOf ('ie8-lte')> -1'. Поскольку html-тег будет отображаться один раз, код с 'datetimepicker' может вызываться чаще. – Pinal

+0

Я уже нашел способ сделать то, что мне нужно на стороне сервера (Oracle PL/SQL создает страницу). Но эта ссылка была очень полезна, и похоже, что это сработало бы для меня (поэтому я выберу ее как ответ). – DaveKub