JQuery函数只允许文本框中的字母表无法正常工作

时间:2016-07-28 09:48:08

标签: javascript jquery

我使用以下JQuery函数来限制用户在文本框中写入数值。代码工作正常,但问题是它还限制用户使用其他字符,如句号(。),逗号(,),$,@和其他符号..它也不允许用户使用复制和过去。我只想限制用户编写数字值或数字,但应允许用户使用其他字符。

$(function() {
  $('.txtOnly').keydown(function(e) {
    if (e.shiftKey || e.ctrlKey || e.altKey) {
      e.preventDefault();
    } else {
      var key = e.keyCode;
      if (!((key == 8) || (key == 32) || (key == 46) || (key >= 35 && key <= 40) || (key >= 65 && key <= 90))) {
        e.preventDefault();
      }
    }
  });
});

4 个答案:

答案 0 :(得分:6)

希望这会有所帮助:

<!DOCTYPE html>

<html lang="en">
    <head>
        <script src="jquery-1.12.2.js"></script>
    </head>
    <body>
        <input class="txtOnly" id="txtOnly" name="txtOnly" type="text" />
        <script>
            $( document ).ready(function() {
                $( ".txtOnly" ).keypress(function(e) {
                    var key = e.keyCode;
                    if (key >= 48 && key <= 57) {
                        e.preventDefault();
                    }
                });
            });
        </script>
    </body>
</html>

答案 1 :(得分:1)

您可以使用正则表达式/[^a-z]/g

$('.txtOnly').bind('keyup blur',function(){ 
    var node = $(this);
    node.val(node.val().replace(/[^a-z]/g,'') ); }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="lorem" class="txtOnly">

答案 2 :(得分:1)

&#13;
&#13;
$('.txtOnly').keypress(function (e) {
			var regex = new RegExp("^[a-zA-Z]+$");
			var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
			if (regex.test(str)) {
				return true;
			}
			else
			{
			e.preventDefault();
			$('.error').show();
			$('.error').text('Please Enter Alphabate');
			return false;
			}
		});
&#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p class="error"></p>
    <input class="txtOnly" type="text">
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用以下代码段来阻止用户输入数字输入。它将检查每个keydown事件,并在提供数值时阻止任何后续操作。

$('.txtOnly').bind('keydown', function(event) {
  var key = event.which;
  if (key >=48 && key <= 57) {
    event.preventDefault();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="txtOnly">