Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объеденить keydown keyCode == 13 и Click
 
 автор: ZetRider   (13.03.2012 в 23:10)   письмо автору
 
 

Доброй ночи,

начал разбирать нажатые клавиши в jquery, пишу код который бы выполнялся при нажатом Enter и Клике. Как мне объединить два этих события?


<script type="text/javascript">
$(document).ready(function(){
    $("#text").bind('click, keydown' ,function(event) {
            if (event.keyCode == 13) { // как бы еще добавить событие click ? 
                $.ajax({
                    type: "POST",  
                    url: "add.php",  
                    data: "id="+$('#text').attr('id'),  
                    success: function(html){  
                        $('#result').val(html);
                    }
                });
            return false;
            }
    });
});
</script>

  Ответить  
 
 автор: Tonik992   (14.03.2012 в 02:29)   письмо автору
 
   для: ZetRider   (13.03.2012 в 23:10)
 

у вас все правильно, только в bind(' click keydown'), насколько я знаю, без запятой перечисляются события
и event.keyCode не понадобится уже

  Ответить  
 
 автор: ZetRider   (14.03.2012 в 07:52)   письмо автору
 
   для: Tonik992   (14.03.2012 в 02:29)
 

Если не использовать event.keyCode == 13
то будет реагировать на все клавиши.. а нужно только на Enter у которого код = 13

код кнопки взял отсюда http://www.aspdotnetfaq.com/Faq/What-is-the-list-of-KeyCodes-for-JavaScript-KeyDown-KeyPress-and-KeyUp-events.aspx

  Ответить  
 
 автор: ЯСА   (14.03.2012 в 09:18)   письмо автору
 
   для: ZetRider   (13.03.2012 в 23:10)
 

1. Никакие события объединить невозможно.
В принципе невозможно.

2. Объект event всегда существует в единственном экземпляре.
Нажали кнопку - произошло событие keydown и объект event своими свойствами описывает именно это событие "нажатия кнопки".
Можно узнать, например, код (event.keyCode) нажатой клавиши

3. ЗАТЕМ (ПОСЛЕ, ПОЗЖЕ, ПОТОМ...) происходит другое событие.
Например - клик левой кнопкой мыши.
Это событие (click) создаёт новый экземпляр объекта event, который напрочь забывает все свойства предыдущего события и приобретает свойства нового события.
Можно узнать, например, тег, по которому кликнули (event.target || event.srcElement)

4. На нормальном Javascript'e просто делается флаг (глобальная переменная), изначально равная false.
Нажали кнопку - обрабатывается отдельной функцией событие keydown, в которой проверяется код нажатой клавиши.
Если код равен коду нужной нам клавиши - значение флага меняется на true.

5. Отпустили кнопку - запускается следующая (вторая) функция, обрабатывающая событие keyup.
Если код кнопки тот же, то значение флага снова делаем false.

6. При событии клика запускается третья функция, в которой обрабатывается событие click и проверяется значение этого самого флага.
Если оно равно true - значит, что кнопка с нужным кодом нажата и ещё не отпущена.
Можно выполнять требуемые действия.

7. В общем - всё просто и примитивно.

8. Полагаю, что и на собачьем языке JQuery невозможно в одной функции обработать два события (а по сути - даже три, об отпускании кнопки читай выше).
Хотя... я этого собачьего языка не знаю, мей би там и "невозможное возможно":-)

PS. Лучше всего JQuery работает на ниве дебилизации своих юзеров.

  Ответить  
 
 автор: ZetRider   (14.03.2012 в 10:06)   письмо автору
 
   для: ЯСА   (14.03.2012 в 09:18)
 

Понятно, спасибо за столь подробный ответ.
Пришлось продублировать код для разных событий

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования