Я создаю, а затем скрываю запись времени jquery, используя два обработчика onready (), и это приводит к критическим ошибкам в IE7 и Firefox - PullRequest
2 голосов
/ 21 января 2009

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

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

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

Ответы [ 2 ]

1 голос
/ 21 января 2009

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

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

РЕДАКТИРОВАТЬ: если вы не знаете во втором обработчике, должен ли он быть скрыт или нет, просто запросите состояние элемента перед рукой с помощью "$ (id) .is (': hidden')" и ведите себя соответственно .

0 голосов
/ 21 января 2009

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

$(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();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...