2017-09-04 141 views
1

我想將輸入框的最大長度限制爲16個字符,但破折號和空格不應包含在計數中。 到目前爲止,這裏是我的代碼將輸入框的長度限制爲16

JS

$('.numericSpaceDash').keypress(function(e){ 

    var xcode = (e.which) ? e.which : e.keyCode; 
    var maxlength = $('.cardtb').attr('maxlength', '16'); 

    var regex = new RegExp("[0-9\- ]"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 

    if (regex.test(str)) { 
     return true; 
    } 

    e.preventDefault(); 
    return false; 

});

HTML

<input type="text" id="sf-cardno" class="tb cardtb rtb numericSpaceDash" autocomplete="off" name="cardno" maxlength="16"/> 

回答

3

好像你只需要從價值刪除空格和破折號,並檢查它的長度

$('.numericSpaceDash').on('keypress', function(e) { 
 
    if ([' ','-'].includes(e.key)) { 
 
      // do something if space or hyphen pressed 
 
    } else if (this.value.replace(/(\s|\-)/g,'').length > 15) { 
 
     e.preventDefault(); 
 
    } else { 
 
     $('#count').html(this.value.replace(/(\s|\-)/g,'').length +1) 
 
    } 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="text" id="sf-cardno" class="tb cardtb rtb numericSpaceDash" name="cardno" /> 
 
<br /> 
 
Count : <span id="count"></span>

注意,jQuery的正常化e.which,你不需要檢查它。

+0

當我使用「 - 」或「」時,我應該能夠輸入16位數字,但是這裏發生的是我最多隻能輸入15個數字。另外當我沒有使用「 - 」或「空格」時,最大長度應該是16,但是我可以用這個代碼放17個數字。謝謝雖然:) – codeninja

+0

@codeninja - 我想你會需要一些額外的條件。我已經添加了一些,看看是否有幫助 – adeneo

+0

謝謝,它的工作原理。 :) – codeninja