Opera 10.62 + JS - не готовы значения. Нужна пауза
16 повідомлень
#14 років тому
Помогите разобраться. Есть сайт, добавляю JS. Там есть форма, происходит ее обработка на JS. В мозиле все хорошо. При тесте в опере возникают ситуации:1) Хочу фокус включить на input с ошибочной информацией. Было так:
document.getElementById("fff").focus()
для Opera пришлось делать
setTimeout('document.getElementById("fff").focus()', 250);
2) С помощью Jquery Forms отправляю ajax запрос. Ответ приходит в XML
Опции для формы
success: OrderProcessXml,
и функция
function OrderProcessXml(resXML) {
var err = $('error', resXML).text();
В Опере err = ""
Но если поставить первой строкой alert
function OrderProcessXml(resXML) {
alert(1);
var err = $('error', resXML).text();
то err принимает нужное значение (цифру)
Что делать в этой ситуации? Alert здесь не к месту будет.
1807 повідомлень
#14 років тому
Код срабатывает раньше, чем подгружается инпут...Ставьте по событию LOAD... Как-то так.

16 повідомлень
2989 повідомлень
#14 років тому
<script defer="defer">...</script>defer - откладывает выполнение скрипта до тех пор, пока вся страница не будет загружена полностью.
1322 повідомлення
16 повідомлень
#14 років тому
Цитата ("vovan_f"):Если jquery, как говорите, используете
то$(document).ready(function() {и т.д.
Вероятно, это ответ на 1 вопрос.
Но что делать со 2 вопросом?
1807 повідомлень
#14 років тому
vovan_f, не-а, если скрипт срабатывает быстрее, чем появляется инпут, то тут как раз то, о чем я говорил - событие LOAD.$(window).load(function() {
Правда, может некорректно работать в ИЕ.
16 повідомлень
#14 років тому
Странно, ни load(), ни ready() не решают 1 вопрос.
// $(window).load(function() {
// $(document).ready(function(){
document.getElementById("fff").focus();
// });
3195 повідомлень
#14 років тому
Скажем так, задачи, решаемые вами стандартны, почему не работает - не ясно, и без просмотра кода - это к гадалке.
16 повідомлень
#14 років тому
<script type="text/javascript">
options_form = {
dataType: 'xml',
success: OrderProcessXml,
beforeSubmit: OrderBeforeSubmit,
url: '/ajax.php?js'
};
function OrderShowError(msg, elem) {
setTimeout('document.getElementById("' + elem + '").focus()', 250);
$('#order_place_error').text(msg);
$('#order_place_error').fadeIn('slow');
setTimeout("OrderHideError()", 7000);
}
function OrderHideError() {
$('#order_place_error').fadeOut('slow');
}
function OrderBeforeSubmit(arr, $form, options) {
OrderHideError();
return true;
}
function OrderProcessXml(resXML) {
var err = $('error', resXML).text();
if (err == 1) {
var msg = $('msg', resXML).text();
var elem = $('field', resXML).text();
OrderShowError(msg, elem);
}
}
</script>
Сейчас проблема в строке 26. Там нужно ставить alert в Opera.