CTRL键和箭头键允许输入

时间:2014-12-30 05:31:34

标签: javascript jquery

<input type="text" id="s" />
jQuery('#s').bind('keyup blur',function()
{ 
    var selectedInput = jQuery(this);
    selectedInput.val( selectedInput.val().replace( /[^a-zA-Z0-9,]/g, '' ) );
});

我想在文本的任何地方编辑我的文字,所以我想要箭头键( left right up down )加上 crtl 键,用 ctrl + A 选择所有文本。

5 个答案:

答案 0 :(得分:2)

您需要将\s添加到正则表达式以允许空格。左右键按下什么都不做。

我已移除keyup事件以避免令人讨厌的行为

工作代码段:

var allowedKeyCodes = [17, 37, 39];

jQuery('#s').bind('blur',function(event){ 
  if($.inArray(event.keyCode, allowedKeyCodes))
    return false;
  var selectedInput = jQuery(this);
  selectedInput.val( selectedInput.val().replace( /[^a-zA-Z0-9,\s]/g, '' ) );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="s" value="Hello World"/>

答案 1 :(得分:2)

只需在代码中添加if条件就可以了,以下是工作代码。让我知道任何进一步的帮助。

jQuery('#s').bind('keyup blur',function()
 { 
  var selectedInput = jQuery(this);
  if (selectedInput.val().match(/[^a-zA-Z0-9,]/g)) {      
    selectedInput.val( selectedInput.val().replace( /[^a-zA-Z0-9,]/g, '' )   );
 }
});

这里是您的答案http://jsfiddle.net/ug1srcm6/

的jsfiddle链接

答案 2 :(得分:1)

最简单的方法是限制哪些键将调用函数

jQuery('#s').bind('keyup blur',function(e)
{ 
  var keys=[37, 38, 39, 40];
  // for any special keys you want to ignore
  // add their keycodes to this array
  // left arrow:     37
  // up arrow:   38
  // right arrow:    39
  // down arrow:     40
  
  // then, only call your function if the key press is not one of these keys
  if($.inArray(e.keyCode, keys ) == -1 ){
    var selectedInput = jQuery(this);
    selectedInput.val( selectedInput.val().replace( /[^a-zA-Z0-9,]/g, '' ) );
    
  }
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="s" />

答案 3 :(得分:0)

对于 ctrl + a ,请尝试以下操作:

$(document).ready(function()
{
    var ctrlDown = false;
    var ctrlKey = 17, aKey = 86

    $(document).keydown(function(e)
    {
        if (e.keyCode == ctrlKey) 
           ctrlDown = true;
    }).keyup(function(e)
    {
        if (e.keyCode == ctrlKey) 
          ctrlDown = false;
    });

    $(".select-all").keydown(function(e)
    {
        if (ctrlDown && (e.keyCode == aKey)) 
           return false;
    });
});

按键代码后使用箭头键:

left arrow:     37

up arrow:   38

right arrow:    39

down arrow:     40

答案 4 :(得分:0)

对于ctrl + a我建议你使用这样的机制: https://github.com/adrianmalik/jquery-hotkeys 然后你可以在例子中做到:

$('input').hotkey('ctrl+a', function() { /* Here you can do what you want */ });