如何防止任何键长按jquery

时间:2014-09-23 17:36:38

标签: jquery keypress

我试图限制来自user.like的输入 用户不应该连续按键。最多可以使用4个

4 个答案:

答案 0 :(得分:2)

以下代码可以帮助您



$(document).ready(function(){
  var flag=0;
  $("#txt").on('keydown',function(e){ 
    flag++;
    if(flag>4){                                    
       e.preventDefault();
    }
  });
  $("#txt").on('keyup',function(e){     
    flag=0;            
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="txt">
&#13;
&#13;
&#13;  

答案 1 :(得分:0)

试试这个。可能不是最优雅的方式,但确实有效。

MarkUp:

<input type="text" id="txt1" onkeypress="CheckCharacters();" />

脚本:

function CheckCharacters() 
{         
   var occurancesToCheck = 4;
   var chars = $("#txt1").val().substring($("#txt1").val().length - occurancesToCheck, $("#txt1").val().length);
   if (/^(.)\1+$/.test(chars) && chars.length == occurancesToCheck)
   {
     event.preventDefault ? event.preventDefault() : event.returnValue = false;
   }
}

答案 2 :(得分:0)

这真的很快,很脏,但这是一个有效的例子(通过正则表达式):

$('#tester').on('keydown', function(e) {

    // Check if the last four characters are the same...
    if(/(.)\1{3,}/.test($(this).val())) {

        // Only allow next character if it isn't the same...
        if (/(.)\1{4,}/i.test($(this).val() + String.fromCharCode(e.keyCode))) {
            e.preventDefault();   
        }        
    }
});

http://jsfiddle.net/L71echj8/

答案 3 :(得分:0)

@Nandha,您可以避免使用jQuery:

var doc = document; //stuff runs faster when objects are in vars

(function() {
    var flag=0;  
    doc.getElementById('txt').addEventListener('keydown', function(e) {
       flag++;
       if(flag>4) {                                    
          e.preventDefault();
       }
    });
    doc.getElementById('txt').addEventListener('keyup', function(e) {
       flag=0;            
    });
})();

<input type="text" id="txt" />