Я создаю запись времени 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 имеет правильную настройку формата времени для виджета, тогда все будет работать нормально.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не могу этого сделать?
$(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')» и ведите себя соответствующим образом.
На самом деле это не решает проблему в моем случае, потому что запись времени все еще может быть не видна, потому что ее родительские контейнеры могут быть скрыты. Запись времени пытается установить фокус, когда для нее установлено значение.