2016-10-28 60 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)); 

       } 
     });