如何防止用户在输入字段中输入无效字符

时间:2011-09-25 01:29:16

标签: javascript jquery

给定文本输入字段。如何防止用户输入空格,以及字母数字或短划线( - )以外的其他内容。

仅限字母数字 - “字母数字字符集由数字0到9和字母A到Z组成。在perl编程语言中,下划线字符(_)也被视为字母数字字符集的成员”

这是一个用户可以选择自定义网址的字段。我想阻止用户输入无效字符。

想法?感谢

4 个答案:

答案 0 :(得分:3)

您可以使用jQuery keyup(..)方法执行此操作。您需要检查event.keyCode是否有效。如果它无效,您可以使用preventDefault()阻止该事件。

请记住验证发送到服务器的数据,因为您在javascript中执行的任何操作都可能被破坏。

这是一个为您执行此操作的库:http://www.itgroup.com.ph/alphanumeric/

答案 1 :(得分:1)

DEMO - JS Fiddle Link

对不起,您的回复很晚。虽然我的答案来晚了。我对答案做了一些修改,就可以了。

需要验证

  1. 在首字母输入限制数字
  2. 限制空格,特殊字符,但允许退格和删除
  3. 启用字母数字字符

            

        
        

      <input name="pac_code" id="input_8_6" type="text" value="" class="form-control medium pacerror pacvalid" data-rule-maxlength="9" data-rule-minlength="9" maxlength="9" minlength="9" placeholder="Porting authorisation code (PAC) *" data-rule-required="true"
        autocomplete="off" size="9">
      <label for="input_8_6" style="color: #ff0000;font-weight: 300;font-size: 12px;margin-bottom: 1%;">Example: ABC123456</label><br />
      <label class="PAC_error error" style="display:none;">Invalid PAC Format</label>
    </div>
    

jQuery

jQuery(document).ready(function() {
  $('#input_8_6').bind('keypress', function(event) {
    var regex = new RegExp("^[a-zA-Z0-9\b]+$");
    var regchar = new RegExp("^[a-zA-Z\b]+$");
    var regnum = new RegExp("^[0-9\b]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    var pacvalue = $(this).val().length;
    if (!regex.test(key)) {
      event.preventDefault();
      return false;
    } else if (pacvalue <= 2) {
      for (i = 0; i <= 2; i++) {
        if (!regchar.test(key)) {
          event.preventDefault();
          return false;
        }
      }
    } else if (pacvalue >= 3) {
      for (j = 4; j <= 9; j++) {
        if (!regnum.test(key)) {
          event.preventDefault();
          return false;
        }
      }
    } else {
      return true;
    }
  });
});

答案 2 :(得分:0)

那里有很多Javascript验证库。谷歌快速搜索“javascript validation”会产生JQuery Validation plugin插件作为第一个点击,所以这可能是一个很好的起点。

正如@Chris Cooper所说,请确保您也进行服务器端验证,因为用户关闭javascript并避免使用客户端验证规则非常简单。

答案 3 :(得分:0)

虽然我的回答很晚,但这可能有助于进一步的读者/技术人员。 谁想要实现一个文本框以接受以下条件。

  • 应该接受字母。
  • 应该接受数字。
  • 不应接受任何特殊字符。

以下是代码。

&#13;
&#13;
$("input[name='txtExample'] ").focus(function (e) {
		if (!(e.which != 8 && e.which != 0 && ((e.which >= 48 && e.which <= 57)  || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122) ))) {
			event.preventDefault();
		}
	}).keyup(function (e) {
		if (!(e.which != 8 && e.which != 0 && ((e.which >= 48 && e.which <= 57)  || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122) ))) {
		event.preventDefault();
			}
	}).keypress(function (e) {
		if (!(e.which != 8 && e.which != 0 && ((e.which >= 48 && e.which <= 57)  || (e.which >= 65 && e.which <= 90) || (e.which >= 97 && e.which <= 122) ))) {
			event.preventDefault();
		}
	
	});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="txtExample"/>
&#13;
&#13;
&#13;

添加了示例。