1

如何检测用户是否选择了<input>框中的文本?

$('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()函数将执行。我怎样才能防止这种情况?

4

3 回答 3

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 键和左、右、上或下箭头。

于 2013-09-30T10:41:23.883 回答
0

使用 jquery select() 怎么样

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

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

您可以轻松禁用使用键盘选择的 keyup 事件。这必须在 keyup 事件处理程序中完成。

于 2013-09-30T10:36:53.340 回答
0

演示

$('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 
    }
});

或者

演示

$('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 
    }
});
于 2013-09-30T10:40:55.427 回答