Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery, keypress в браузере google chrome, Как-то странно работает 
:(
    Опции темы
FlakeMusic
Дата 16.8.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.3.2008

Репутация: нет
Всего: 1



Здравствуйте.

Код

$("#commentForm").keypress(function (e) {
          alert(e.which);
        });


Если нажать Enter+Ctrl, то выводит 10 вместо 13. Во всех др. браузерах выводит 13. Из-за этого в хроме не работает условие:
Код

if (e.which == 13 && e.ctrlKey) {
    // ...
}


Почему такое происходит?
PM MAIL   Вверх
Amphiluke
Дата 16.8.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Попробуйте вместо keypress сделать keyup и вместо e.which использовать e.keyCode
PM   Вверх
ksnk
Дата 16.8.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



а патамушта! 

Движек WebKit писался изначально для Мака, а у него перевод строки - \r , а не \n, как в юниксе или \n\r, как в винде. Что добавляет программистам еще немного радости при кодировании  smile 

Нужно проверять и то и это.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
FlakeMusic
Дата 16.8.2010, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.3.2008

Репутация: нет
Всего: 1



т.е. такая проверка верна?
Код

if ((e.which == 13 || e.which == 10) && e.ctrlKey == true ) {
             $(submitButton).click();
         }

PM MAIL   Вверх
ksnk
Дата 16.8.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Хотя это довольно странно. 
Обычно which не проверяют, а проверяют keyCode. и он всегда получается 13 для Enter'а
Код

if (e.keyCode == 13 && e.ctrlKey == true ) {
             $(submitButton).click();
         }

то есть вот так должно исправно работать ... надо бы подумать над тем, что такое which ...

Добавлено через 4 минуты и 42 секунды
а вот здесь советуют даже так выковыривать нажатую клавишу
Код

function doSomething(e) {
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    var character = String.fromCharCode(code);
    alert('Character was ' + character);
}



Это сообщение отредактировал(а) ksnk - 16.8.2010, 14:40


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
FlakeMusic
Дата 16.8.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.3.2008

Репутация: нет
Всего: 1



e.keyCode тоже возвращает "10"
PM MAIL   Вверх
ksnk
Дата 16.8.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



вот кусочек из кода jQuery, который доопределяет параметр 
Код

if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
    event.which = event.charCode || event.keyCode;
}

так что вот. Именно от маков ноги в это параметр и произрастают...

Добавлено через 1 минуту и 49 секунд
Ну тогда, значит, проверять на оба значения... :(
А сам Enter,  без контрола, как надо выглядит, кодом 13?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
FlakeMusic
Дата 16.8.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.3.2008

Репутация: нет
Всего: 1



Цитата(ksnk @  16.8.2010,  14:47 Найти цитируемый пост)
А сам Enter,  без контрола, как надо выглядит, кодом 13? 


Да, 13.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.