Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   код странно отрабатывает комбинацию клавиш (https://javascript.ru/forum/misc/14524-kod-stranno-otrabatyvaet-kombinaciyu-klavish.html)

ffx 20.01.2011 02:19

код странно отрабатывает комбинацию клавиш
 
в общем есть такой код
$(document).keypress(function (e) {
				if (e.which == 13 && e.ctrlKey ) send_message();
				if (e.which == 13  ) send_message();
			});

функция send_message(); выглядит так
function send_message(){
				if ($('#message').val() == '') 	{
					$.gritter.add({
						title: 'Ошибочка вышла!',
						image: 'images/i/edit-64.png',
						//sticky: true, 
						time: '3000',
						text: 'Сообщение то не ввели.'
					});
				}
				else {		
					дальнейший код....
			}

то есть идет проверка на ввод сообщения, и в общем если запускать так
$('#send_message_button').click(function(){
				send_message();
			});

то все работает как надо или если просто нажать ентер то тоже отрабатывает как надо, а вот если комбинацией например ктрл+ентер или шифт + ентер, то и код if`a отрабатывается и else, если же не ввести сообщение то есть действительно сделать $('#message').val() == '' тогда два раза отработает if и раз else
на всякий случай оговорюсь, использую jquery


P.S. я уже не че не понимаю надеюсь на вашу помощь и надеюсь вы поняли что за белиберду я тут написал

Aetae 20.01.2011 02:45

Не очень понял вопрос, но здесь:
$(document).keypress(function (e) {
				if (e.which == 13 && e.ctrlKey ) send_message();
				if (e.which == 13  ) send_message();
			});

В случае если нажато ctrl+enter функция send_message() запускается дважды.

ffx 20.01.2011 10:32

наверное в этом и ошибка, а почему дважды и как поправить?

Vulkan 20.01.2011 10:49

$(document).keypress(function (e) {
				if (e.which == 13 && e.ctrlKey ) send_message();
				else if (e.which == 13  ) send_message();
			});

или
$(document).keypress(function (e) {
				if ((e.which == 13 && e.ctrlKey) || e.which == 13) send_message();
			});

ffx 20.01.2011 10:58

спасибо!


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