Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   В firefox не отрабатывает событие. (https://javascript.ru/forum/events/50898-v-firefox-ne-otrabatyvaet-sobytie.html)

berto 16.10.2014 11:14

В firefox не отрабатывает событие.
 
Помогите пожалуйста исправить ошибку, в chrome нормально работает, а в firefox нет. (Смысл такой, что при нажатии на ентер идет переход на следующее поле.)
<form method="post" action="admin.php" enctype="multipart/form-data" id="objetcform" onkeydown="
with (window.event)
if (keyCode == 13) {
fn = function (elements, start) {
for (var i=start; i < elements.length; i++) {
var element = elements[i]
with (element) if (tagName == \'INPUT\' || tagName == \'SELECT\' || tagName == \'TEXTAREA\') {
focus();
break;
}
}
return i;
}
for (var i=0; i < elements.length; i++) {
if (elements[i] == srcElement) {
break;
}
}
if (fn(elements,i+1) == elements.length) fn(elements,0)
}
" >

danik.js 16.10.2014 11:21

Вытащи код из атрибута, избавься от with() блока , научись вставлять форматированный код в свой пост и приходи к нам снова ;)

kostyanet 16.10.2014 13:01

Пришлось выкинуть это дело, написал в справке чтоб Tab давили (Shift+Tab назад), потому что перейти с текстарии все равно нельзя, с файла нельзя, со списка нельзя - лажа, короче, а не екзель.

Или у вас екзель?

kostyanet 16.10.2014 13:09

Нашел, цитировать не могу, там сразу было все проиндексировано у меня.

Вообще примерно так

for(var i=0; i<form.elements.length; i++) {
   if(event.target.isEqualNode(form.elements[i]) 
      && typeof form.elements[i+1]!=='undefined') {
         form.elements[i+1].focus();
         break;
      }
}


Плюс еще несколько && на всякие неадекватные поля.

berto 17.10.2014 01:18

Я так понимаю что with не очень хорошо использовать. а как правильно избавиться от with (window.event), потому как firefox на это и ругается?

danik.js 17.10.2014 08:34

В Firefox вообще нет window.event. Его и не должно быть по спецификации. Это выдумка IE, а хром просто ради совместимости поддерживает такое.
Внутри inline-обработчика в любом браузере доступен объект event.

berto 17.10.2014 12:04

Спасибо, Вопрос закрыт.

rekzi 18.10.2014 02:03

В приведенном тобою коде нет селекта. Нет и фокуса. Вставляй код полностью, или используй что-то вроде этого http://jsfiddle.net/.


Часовой пояс GMT +3, время: 14:33.