Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№105-10-2005 16:36:11

Alex99
Участник
 
Группа: Members
Зарегистрирован: 05-10-2005
Сообщений: 6

JavaScript в FF

Вот интересно я дурак или что-то здесь не так.
Код

Выделить код

Код:

<html>
<script language="JavaScript">
 function isNumber(elem) {
    var str = elem.value;
    var oneDecimal = false;
    var oneChar = 0;
    // удостоверяемся, что значение не преобразовано в число
    str = str.toString();
    for (var i = 0; i < str.length; i++) {
        oneChar = str.charAt(i).charCodeAt(0);
        // первым символом может быть знак минус
        if (oneChar == 45) {
            if (i != 0) {   
                continue;
            } else {     
                alert("Знак минус может быть только первым символом строки.");
                elem.focus();                                                 
                return false;
            }                
        }    
        // десятичная точка
        if (oneChar <= 46) {
            if (!oneDecimal) {
                oneDecimal = true;
                continue;         
            } else {     
                alert ("В числе может быть только одна десятичная точка!");
                elem.focus();                                              
                return false;
            }                
        }    
        // символы вне диапазона от 0 до 9 не подходят
        if (oneChar < 48  || oneChar > 57) {
            alert("В поле разрешено вводить только числа.");
            elem.focus();                                   
            return false;
        }
    }    
    return true;
 }
</script>

<form name="testform" method="post" action="test5.php">
 <input type="hidden" name="good_id[]" value="123456789">
 <input type="text" name="good_kol[]" value="0.000" OnBlur="isNumber(this)">F1<br>
 <input type="hidden" name="good_id[]" value="000000009">
 <input type="text" name="good_kol[]" value="0.000" OnBlur="isNumber(this)">F2<br>
 <input type="hidden" name="ACTION" value="">
 <input type="submit" name="knop" value="Оформить">
</form>
</html>

Собственно ничего умного здесь нет. Если в поле формы введено неверное значение то об этом надо сказать и установить фокус на это поле. Переход между полями табуляцией.
FF - 1.0.6 - выдает сообщение, переходит на другое поле.
IE - Выдает сообщение и ставит фокус в начало поля с неверным значением.
Mozilla - Выдает сообщение и выделяет значение в поле с неверным значением.

Соттветсвенно поведение и IE и Mozilla меня устраивает. А вот поведение FF нет. Проверялать и Linux и Windows версия.
Если я что то делаю не так - поправьте меня.

Отсутствует

 

№205-10-2005 17:38:55

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: JavaScript в FF

Alex99
Не знаю, как это в Mozilla может работать, т.к. беда с передачей фокуса в формах в Gecko длится уже много лет:
https://bugzilla.mozilla.org/show_bug.cgi?id=53579

Отсутствует

 

№306-10-2005 13:18:48

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript в FF

Попробуйте заменить

Выделить код

Код:

elem.focus();

на

Выделить код

Код:

currentElem=elem.focus();
setTimeout('currentElem.focus();',200);

Отсутствует

 

№406-10-2005 14:37:12

Alex99
Участник
 
Группа: Members
Зарегистрирован: 05-10-2005
Сообщений: 6

Re: JavaScript в FF

Так как Вы написали вызывает сл. сообщение.
Ошибка: currentElem has no properties
Источник: http://dp.ceramica.ru/testform.html
Строка: 37

если написать

Выделить код

Код:

currentElem=elem.focus();
           setTimeout('currentElem;',200);

То поведение не меняется.

Тут момент еще такой.
Когда пытаешся перейти в следующее поле мышью то нормально отрабатывает за исключением того что курсор в поле после значения ставит.
Но если табуляцией то фокус на поле не возвращается.

Отсутствует

 

№506-10-2005 17:10:38

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: JavaScript в FF

==> Разработка


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№606-10-2005 19:03:41

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript в FF

Alex99
Ой, прошу прощения!

Выделить код

Код:

currentElem=elem;
setTimeout('currentElem.focus();',200);

Отсутствует

 

№720-10-2005 12:13:58

Alex99
Участник
 
Группа: Members
Зарегистрирован: 05-10-2005
Сообщений: 6

Re: JavaScript в FF

Вроде работает.
Спасибо вот бы еще природу этого понять.

Отсутствует

 

№820-10-2005 13:35:09

kan
Участник
 
Группа: Members
Зарегистрирован: 17-10-2005
Сообщений: 3

Re: JavaScript в FF

Al_H пишет

Alex99
Ой, прошу прощения!

Выделить код

Код:

currentElem=elem;
setTimeout('currentElem.focus();',200);
Выделить код

Код:

setTimeout(function(){elem.focus()},200)

И не надо использовать глобальные переменные.

Отсутствует

 

№921-10-2005 03:00:12

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript в FF

kan
Хороший вариант. Вообще-то, использование безымянных функций сильно отжирает память у распространенных версий Internet Explorer.

Отсутствует

 

№1021-10-2005 10:43:16

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: JavaScript в FF

Alex99 пишет

...вот бы еще природу этого понять.

Элемент не теряет фокус, пока не завершится обработка события onblur элементом.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]