2013-09-30 4 views
1

Как определить, выбирает ли пользователь текст в поле <input>?keyCode или обнаружение для выбора в текстовом поле

$('input[name=inputname]').keyup(function(e) 
{ 
    if((e.keyCode!=37)&&(e.keyCode!=38)&&(e.keyCode!=39)&&(e.keyCode!=40)) // Check whether the user is navigating inside the box by pressing the arrows 
    { 
     call_the_function(); 
    } 
}); 

Теперь, когда пользователь выбирает текст, который он/она набранный с помощью Shift + стрелка влево или Shift + Стрелка вправо, функция keyUp() выполняет. Как я могу это предотвратить?

+1

Вам не нужно изменять AND и && AND на OR «||»? – 97ldave

+0

Как насчет выбора с помощью мыши? Это бесполезная проблема для решения в любом случае, поскольку я могу скопировать любую ценность из источника веб-сайта, если мне это очень плохо. –

+0

@RoryMcCrossan: Мне не нужно предотвращать копирование текста. Мой вопрос заключается в том, когда пользователь нажимает клавишу Shift вместе с клавишами навигации, запускается событие 'keyUp()'. Мне нужно это предотвратить. Как это возможно? –

ответ

0

DEMO

$('input[name=inputname]').keyup(function (e) { 
    if (event.shiftKey && ((e.keyCode >= 37) && (e.keyCode <= 40))) 
    { 
     return false; 
    }else{ 
     console.log('hi'); //call function when shift+arrow keys not pressed together 
    } 
}); 

или

DEMO

$('input[name=inputname]').keyup(function (e) { 
    if (!(event.shiftKey && ((e.keyCode >= 37) && (e.keyCode <= 40)))) { 
     console.log('hi'); //call function when shift+arrow keys not pressed together 
    } 
}); 
0

что об использовании JQuery выберите()

http://jsfiddle.net/kasperfish/xWEPh/

//http://api.jquery.com/select/ 
$("#target").select(function() { 
alert("Handler for .select() called."); 
}); 

можно легко отключить KeyUp события для выбора с клавиатуры. Это нужно сделать в обработчике событий keyup.

1

Попробуйте это:

$('input[name=inputname]').keyup(function(e) 
{ 
    if((e.keyCode!=16)&&(e.keyCode!=37) 
     ||(e.keyCode!=16)&&(e.keyCode!=38) 
     ||(e.keyCode!=16)&&(e.keyCode!=39) 
     ||(e.keyCode!=16)&&(e.keyCode!=40)) // Check whether the user is navigating inside the box by pressing the arrows 
    { 
     call_the_function(); 
    } 
}); 

Это следует проверить на клавишу Shift и либо стрелка влево, вправо, вверх или вниз.

Смежные вопросы