用Jquery控制文本框只能输入数字和字母

只为成功找方法,不为失败找借口!

用Jquery控制文本框只能输入数字和字母

  在公司开发WinForm项目时,发现公司自主研发的textbox控件非常强大,可以实现"只能输入数字"、"只能输入字母"和"只能输入数字和字母"的三种输入限制,这样就可以精确控制用户输入的内容范围,让"用户永远没有办法输入限定的内容范围之外的其他内容",也就是"用户即使想犯错误也没有机会",这种限制控件输入的方式给了我很大的启发,如果在web项目中也能做到这样的精确控制,那么就可以避免因为一些非法输入而造成系统出错,既然WinForm里面可以实现这样的控件,那么web项目里面也应该有办法去实现类似这样的控件或者能够做到类似的效果,经过自己的一番研究和查找资料,终于做到了类似的效果,针对"只能输入数字"、"只能输入字母"和"只能输入数字和字母"的三种输入限制,我封装成onlyNum(),onlyAlpha()和onlyNumAlpha()3个Jquery扩展方法,方便复用,由于里面一些JS代码涉及到了"禁用输入法,获取剪切板的内容",而"禁用输入法,获取剪切板的内容"只能在IE浏览器下才有效,对于别的浏览器是无效的,因此这三个方法只适合在IE浏览器下使用才有效,三个方法的代码如下

一、限制只能输入数字

 1 // ----------------------------------------------------------------------
 2 // <summary>
 3 // 限制只能输入数字
 4 // </summary>
 5 // ----------------------------------------------------------------------
 6 $.fn.onlyNum = function () {
 7     $(this).keypress(function (event) {
 8         var eventObj = event || e;
 9         var keyCode = eventObj.keyCode || eventObj.which;
10         if ((keyCode >= 48 && keyCode <= 57))
11             return true;
12         else
13             return false;
14     }).focus(function () {
15     //禁用输入法
16         this.style.imeMode = ‘disabled‘;
17     }).bind("paste", function () {
18     //获取剪切板的内容
19         var clipboard = window.clipboardData.getData("Text");
20         if (/^\d+$/.test(clipboard))
21             return true;
22         else
23             return false;
24     });
25 };

二、限制只能输入字母

 1 // ----------------------------------------------------------------------
 2 // <summary>
 3 // 限制只能输入字母
 4 // </summary>
 5 // ----------------------------------------------------------------------
 6 $.fn.onlyAlpha = function () {
 7     $(this).keypress(function (event) {
 8         var eventObj = event || e;
 9         var keyCode = eventObj.keyCode || eventObj.which;
10         if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122))
11             return true;
12         else
13             return false;
14     }).focus(function () {
15         this.style.imeMode = ‘disabled‘;
16     }).bind("paste", function () {
17         var clipboard = window.clipboardData.getData("Text");
18         if (/^[a-zA-Z]+$/.test(clipboard))
19             return true;
20         else
21             return false;
22     });
23 };

三、 限制只能输入数字和字母

 1 // ----------------------------------------------------------------------
 2 // <summary>
 3 // 限制只能输入数字和字母
 4 // </summary>
 5 // ----------------------------------------------------------------------
 6 $.fn.onlyNumAlpha = function () {
 7     $(this).keypress(function (event) {
 8         var eventObj = event || e;
 9         var keyCode = eventObj.keyCode || eventObj.which;
10         if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122))
11             return true;
12         else
13             return false;
14     }).focus(function () {
15         this.style.imeMode = ‘disabled‘;
16     }).bind("paste", function () {
17         var clipboard = window.clipboardData.getData("Text");
18         if (/^(\d|[a-zA-Z])+$/.test(clipboard))
19             return true;
20         else
21             return false;
22     });
23 };

使用方法:首先在画面加载完成之后编写如下的JS脚本

1 $(function () {
2     // 限制使用了onlyNum类样式的控件只能输入数字
3     $(".onlyNum").onlyNum();
4     //限制使用了onlyAlpha类样式的控件只能输入字母
5     $(".onlyAlpha").onlyAlpha();
6     // 限制使用了onlyNumAlpha类样式的控件只能输入数字和字母
7     $(".onlyNumAlpha").onlyNumAlpha();
8    });

对需要做输入控制的控件设置class样式

1  <ul>
2         <li>只能输入数字:<input type="text" class="onlyNum" /></li>
3         <li>只能输入字母:<input type="text" class="onlyAlpha" /></li>
4         <li>只能输入数字和字母:<input type="text" class="onlyNumAlpha" /></li>
5  </ul>

这样画面上凡是设置了class="onlyNum"的控件就只能输入数字,设置了class="onlyAlpha"的控件只能输入字母,设置了class="onlyNumAlpha"的控件只能输入数字和字母,通过这种方式就可以限制了用户的输入范围,避免用户进行一些非法的输入。

  在我看来,这种限制控件输入的方式是比较好的一种方式,可以避免用户犯错,平时传统的做法都是用户输入了非法字符后,我们再弹出一个消息框告诉用户输入了非法字符,这种方式就是"用户已经做了,我们才告诉用户不能这么做",而上面的那种方式是却能让用户只能输入我们指定范围内的字符,让"用户永远没有机会去犯错"。

  

  写这篇文章既是对我自己学习的一个总结,也希望能够对一些初学者朋友们有一定的帮助,以上文章内容如果有写得不对的地方,欢迎广大朋友指正,我感激不尽!,另外,如果有朋友有办法在火狐和google下也能够禁用输入法和获取剪切板的内容的,也希望能够告知我一下,感激不尽!

时间: 2024-10-13 06:50:43

用Jquery控制文本框只能输入数字和字母的相关文章

jquery限制文本框只能输入数字、JQuery 限制文本框只能输入数字和小数点

/*JQuery 限制文本框只能输入数字及小数点 */ <script> $(function(){ /*JQuery 限制文本框只能输入数字*/ $("#id").keyup(function(){ $(this).val($(this).val().replace(/\D|^0/g,'')); }).bind("paste",function(){  //CTR+V事件处理 $(this).val($(this).val().replace(/\D|

jquery 限制文本框只能输入数字

1 $("input[name='searchBean.con1']").keyup(function(){ //keyup事件处理 2 $(this).val($(this).val().replace(/\D|^0/g,'')); 3 }).bind("paste",function(){ //CTR+V事件处理 4 $(this).val($(this).val().replace(/\D|^0/g,'')); 5 }).css("ime-mode&

JQuery限制文本框只能输入数字和小数点的方法

<input type="text" class="txt NumText"  Width="100px"  /> $(function(){ /*JQuery 限制文本框只能输入数字*/ $(".NumText").keyup(function(){ $(this).val($(this).val().replace(/D|^0/g,'')); }).bind("paste",function

C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位

使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat="server" size="5" maxlength="5" onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')"></asp:TextBox> C# 使用j

jquery限制文本框只能输入数字

1.input 中加事件 onkeyup="return ValidateNumber($(this),value)" 2.ValidateNumber函数 function ValidateNumber(e, pnumber) { if (!/^\d+$/.test(pnumber)) { $(e).val(/^\d+/.exec($(e).val())); } return false; }

js 控制文本框只能输入中文、英文、数字等

总而言之:先在<input>里输入onkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的X换成你想输入的代码就可以了,中文u4E00-u9FA5,数字0-9,英文a-z\A-Z,其它符号@.点或其它符号.也可以多个,用\隔开就行了. 例如:中英文 + 数字 + @符号 + 点符号   \a-\z\A-\Z0-9\u4E00-\u9FA5\@\. 若想在文本框里不能右键弹出菜单和不能粘贴进复制的信息的话 就要在

Js控制文本框只能输入中文、英文、数字与指定特殊符号

JS 控制文本框只能输入数字<input onkeyup="value=value.replace(/[^0-9]/g,'')"onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu ="value=value.replace(/[^0-9]/g,'')"> JS 控制文本框只能输入数字.小数点<inputonkeyup="value=value.replac

JS 控制文本框只能输入中文、英文、数字与指定特殊符号

想做姓名输入的js判断是否是中文,但是网上找的很多是源于一篇文章的,判断中文的正则式不对,后来找到一个可以准确判断了,但是是监测里面有中文的就行,跟我想要的只能输入中文的意思相左,所以又找了下面的 JS 控制文本框只能输入数字 input onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu = "value

GUI编程笔记(java)09:GUI控制文本框只能输入数字字符案例

1.首先我们看看我的需求,如下: 控制文本框只能输入数字字符 2.源代码: package cn.itcast_07; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextField; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.W