2016-10-28 58 views
0

我正在写一个jQuery代码,它应该用在变量中定义的字符切换输入字符。到目前为止,如果您仔细地只按一个字符,代码就可以很好地工作。但是一旦你打多个字符,你就开始打破结果。有什么样的选择可以让jquery一次只取一个字符,或者正确读出并转换多个字符。jQuery:一次阻止多个输入

多个字符的结果按压太快或压类似地导致具有混合起来和/或具有从所述多个输入中。

混合一些字符的具有可变字符的我已经了解了的字符串。 prop()函数禁用输入,但即使我禁用输入,我也无法阻止多个字符被传入函数。

谢谢你们提前, 欢呼

HTML:

jQuery(document).ready(function(){ 
 
     String.prototype.removeChar = function(){ 
 
      var string = ""; 
 
      for(var i = 0, length = this.length-1; i<length; i++){ 
 
       string += this.charAt(i); 
 
      } 
 
      return string; 
 
     } 
 
     var name = "Some Random Name", 
 
      length, 
 
      sub = "", 
 
      event, 
 
      array=[]; 
 
     $("form").on("keyup", function(e){ 
 
      event = e.keyCode; 
 
      if (e.keyCode === 8){ 
 
       length = $(".input").val().length; 
 
       sub = sub.removeChar(); 
 
       $(".input").val(sub); 
 
      }else{ 
 
       length = $(".input").val().length; 
 
       sub += name.charAt(length-1); 
 
       $(".input").val(sub); 
 
       } 
 
     }); 
 
     
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form>Who should be President?<input type="text" name="president" class="input"></form>

+1

然后只需在您的html输入中添加maxLength =“1” – Beginner

+0

严肃地说,这是一个非常好的和简单的解决方案!作品完美无瑕。 –

+0

你的意思是最大长度? – Beginner

回答

1

只要改变

sub += name.charAt(length-1); 

sub = name.substring(0, length); 

想法是刚刚获得由用户输入的字符的总数,并使用substring功能获取从name变量众多人物

jQuery(document).ready(function(){ 
 
     String.prototype.removeChar = function(){ 
 
      var string = ""; 
 
      for(var i = 0, length = this.length-1; i<length; i++){ 
 
       string += this.charAt(i); 
 
      } 
 
      return string; 
 
     } 
 
     var name = "Some Random Name", 
 
      length, 
 
      sub = "", 
 
      event, 
 
      array=[]; 
 
     $("form").on("keyup", function(e){ 
 
      event = e.keyCode; 
 
      if (e.keyCode === 8){ 
 
       length = $(".input").val().length; 
 
       sub = sub.removeChar(); 
 
       $(".input").val(sub); 
 
      }else{ 
 
       length = $(".input").val().length; 
 
       sub = name.substring(0, length); // this is the change 
 
       $(".input").val(sub); 
 
       } 
 
     }); 
 
     
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form>Who should be President?<input type="text" name="president" class="input"></form>

1

改变你的

$(".input").val(sub); 

$(".input").val(name.substring(0, length)); 

然后改变你的条件

if (e.keyCode !== 8){ 
    length = $(".input").val().length; 
    sub += name.charAt(length-1); 
    $(".input").val(name.substring(0, length)); 
} 

在这种情况下,你做什么,如果您单击后退按钮

jQuery(document).ready(function(){ 
 
     String.prototype.removeChar = function(){ 
 
      var string = ""; 
 
      for(var i = 0, length = this.length-1; i<length; i++){ 
 
       string += this.charAt(i); 
 
      } 
 
      return string; 
 
     } 
 
     var name = "Some Random Name", 
 
      length, 
 
      sub = "", 
 
      event, 
 
      array=[]; 
 
     $("form").on("keyup", function(e){ 
 
      event = e.keyCode; 
 
      if (e.keyCode !== 8){ 
 
       length = $(".input").val().length; 
 
       sub += name.charAt(length-1); 
 
       $(".input").val(name.substring(0, length)); 
 
      } 
 
     }); 
 
     
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form>Who should be President?<input type="text" name="president" class="input"></form>

+0

你的回答非常好,非常有帮助,但不是我一直在寻找的东西。尽管如此,还是很有用的投入谢谢! –

+1

@ThomasChristopherDavies我更新了我的答案,现在无错误 – Beginner

1

只需更换与整个输入VAL随机名称和切割短的

$("form").on("keyup", function(e){ 
      event = e.keyCode; 
      if (e.keyCode != 8){ 

       length = $(".input").val().length; 
       //sub += name.charAt(length-1); 
       $(".input").val(name.substring(0, length)); 

       } 
     });