簡體   English   中英

jQuery不允許在輸入字段中輸入字母

[英]jQuery do not allow alphabets to be entered in input field

我的要求是不允許用戶輸入任何字母。 即使我在keydownkeyup方法上都提供了e.preventDefault()方法,下面的代碼也允許輸入1個字符。

 $(function() { // Regular Expression to Check for Alphabets. var regExp = new RegExp('[a-zA-Z]'); $('#test').on('keydown keyup', function(e) { var value = $(this).val(); // Do not allow alphabets to be entered. if (regExp.test(value)) { e.preventDefault(); return false; } }); // End of 'keydown keyup' method. }); // End of 'document ready' 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="test" name="test" /> 

我究竟做錯了什么? 還有其他方法可以做到這一點嗎?

更換

var value = $(this).val();

通過

var value = String.fromCharCode(e.which) || e.key;

畢竟,您需要檢查已按下哪個鍵, 然后才能在該字段中鍵入字符。

另外,請確保沒有阻止退格鍵和刪除鍵以及箭頭鍵!

 $(function() { var regExp = /[az]/i; $('#test').on('keydown keyup', function(e) { var value = String.fromCharCode(e.which) || e.key; // No letters if (regExp.test(value)) { e.preventDefault(); return false; } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="test" name="test" /> 

如果您的目標是僅接受數字,點和逗號,請改用以下功能:

 $(function() { var regExp = /[0-9\\.\\,]/; $('#test').on('keydown keyup', function(e) { var value = String.fromCharCode(e.which) || e.key; console.log(e); // Only numbers, dots and commas if (!regExp.test(value) && e.which != 188 // , && e.which != 190 // . && e.which != 8 // backspace && e.which != 46 // delete && (e.which < 37 // arrow keys || e.which > 40)) { e.preventDefault(); return false; } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="test" name="test" /> 

您需要將輸入數據存儲在某個位置,並在用戶每次輸入允許的字符時進行更新,或者在禁用時重置

$(function() {
// Regular Expression to Check for Alphabets.
var regExp = new RegExp('[a-zA-Z]'),
    inputVal = '';

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

    var value = $(this).val();

    // Do not allow alphabets to be entered.
    if (regExp.test(value)) {
        $(this).val(inputVal)
    }
    else{ 
        inputVal = value
    }

}); // End of 'keydown keyup' method.

}); // End of 'document ready'

創建一個將其掩蓋的功能

的jsfiddle

$.fn.noMask = function(regex) { 
  this.on("keypress", function(e) {
    if (regex.test(String.fromCharCode(e.which))) {
        return false;
    }
  });
}

$("input").noMask ( /[a-zA-Z]/ );

如果您只嘗試帶空格的字母,則可以嘗試:

$("#test").on("keypress keyup blur",function (event) { 

 $(this).val($(this).val().replace(/[^a-zA-Z ]/, ""));

if (!((event.charCode > 64 && 
    event.charCode < 91) || event.charCode ==32 || (event.charCode > 96 && 
      event.charCode < 123))) {
      event.preventDefault();
    }
 });

此代碼將僅允許輸入數字,例如在電話號碼輸入字段中。 這是對已接受答案的改進。

var regExp = /[0-9]/;
      $("#test").on('keydown keyup blur focus', function(e) {

        var value =e.key;
        /*var ascii=value.charCodeAt(0);
        $('textarea').append(ascii);
        $('textarea').append(value);
        console.log(e);*/
        // Only numbers
        if (!regExp.test(value)
          && e.which != 8   // backspace
          && e.which != 46  // delete
          && (e.which < 37  // arrow keys
            || e.which > 40)) {
              e.preventDefault();
              return false;
        }
      });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM