Я создаю, а затем скрываю запись времени jquery с помощью двух обработчиков onready (), и это приводит к критическим ошибкам в IE7 и Firefox

Я создаю запись времени jquery в обработчике onready () и скрываю ее в другом обработчике onready () в jquery. (Причина, по которой код вызывается в двух разных обработчиках onread (), заключается в том, что запись времени создается с помощью многоразового средства визуализации виджетов Django и скрывается с помощью логики приложения локального экрана.)

Запись времени jquery дает критическую ошибку, если вы пытаетесь создать запись времени jquery в скрытом поле ввода. Следующий код вызовет фатальные ошибки в IE7 и Firefox. Если я скрываю () запись после ее создания, все работает нормально, но я не могу контролировать порядок двух моих обработчиков onready () (это связано с проблемами фреймворка, которые нельзя обойти). Это ошибка. во временном поле или неопределенное поведение в браузерах? Есть ли изящный способ обойти это, не имея специального взлома для решения проблемы?

<html>
<head>
<script type = "text/javascript" src = "jquery_ui/jquery-1.3.js"></script>
<script type = "text/javascript" src = "jquery_ui/ui.core.js"></script>
<script type = "text/javascript" src = "jquery_time_entry/jquery.timeentry.js"></script>
<script type = "text/javascript">
$(document).ready(function(){
 $('#id_testTimePicker').hide();
});
$(document).ready(function(){
    var id = "#id_testTimePicker";
    $(id).timeEntry({spinnerImage: '%sjquery_time_entry/timeEntry.png'
    , timeSteps: [1, 5, 1]});
    $(id).timeEntry('setTime', new Date());
});
</script>
</head>
<body>
<input id = "id_testTimePicker"></input>
</body>
</html>

ОБНОВЛЕНИЕ: в приведенном выше коде на самом деле только команда "setTime" вызывает ошибку браузера. Если я изменю это на $ (id) .setVal (str), где str имеет правильную настройку формата времени для виджета, тогда все будет работать нормально.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
1 324
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Не могу этого сделать?

$(document).ready(function(){
    var id = "#id_testTimePicker";
    $(id).timeEntry({spinnerImage: '%sjquery_time_entry/timeEntry.png'
    , timeSteps: [1, 5, 1]});
    $(id).timeEntry('setTime', new Date());
    $(id).hide();
});
Ответ принят как подходящий

Во втором обработчике готовности включите вызов «.show ()» перед вызовом timeEntry, а затем снова вызовите его «.hide ()».

Тем не менее, кажется странным, что timeEntry заботится о том, было ли это видно или нет. На самом деле это не имеет значения, так что я предполагаю, что это ошибка timeEntry.

Обновлено: Если вы не знаете во втором обработчике, следует ли он скрывать или нет, просто запросите состояние элемента заранее с помощью «$ (id) .is (': hidden')» и ведите себя соответствующим образом.

На самом деле это не решает проблему в моем случае, потому что запись времени все еще может быть не видна, потому что ее родительские контейнеры могут быть скрыты. Запись времени пытается установить фокус, когда для нее установлено значение.

MikeN 21.01.2009 22:05

Другие вопросы по теме