js禁止小键盘输入数字功能源码,js控制input只能输入数字

本文目录一览:

js中怎样控制不满足条件时不让键盘输入

最经典的实现字符数控制的方案

当我们在ASP.NET开发时,经常会遇到一个头疼的问题:字符数的控制

由于数据库的字段长度是固定的,因此在进行字符输入时,最关键的就是控制字符的个数不能超过字段的长度,要不然,一个个异常会让人疯掉的。

对于单行文本框,不管是HTML控件还是Web控件,我们经常会使用MaxLength来控制,但这种控制无法控制到中文字符,即MaxLength=50的控制,可以输入50个英文与50个中文,这样的话,还是会导致中文字符数的溢出。

对于多行文本框,那就更惨了,使用MaxLenth根本不起作用的。

下面提供的方案优势:

1)最佳的方法是在文本框中输入时,控制到最大字数,超过时不能进行输入;

2)对于粘帖的情况也要能兼容,以前网上的方法不能控制到paste的情况;

3)对于最后的一个中文字符,宁愿舍去也不能多一个字符,比如50的字符数,在第49个时,最后输入一个中文,会导致最终字数为51,而这种情况,推荐是不能输入中文,保证最终的字符数=50最佳,因为放弃一个中文字符总比数据库报错要好吧。

4)为了提高开发效率,尽可能的减少代码量,此方案不需要为文本框添加任何事件,而是由脚本块自己解决,因此只需要把脚本块饮包含到页面中就可以了,这应该是相当方便了吧

完善版修改:由于前一个方案中,一些输入法无法激活onpress事件,导致对于中文的不支持,现在采用onkeyup事件处理,在处理方式上也进行了修改,原来的onpress事件是进行输入控制,而onkeyup只能对已经输入后的字数进行字数判断,过长的进行截短处理。

在原方案中,有位朋友指出:数据采用n(type)系统不会报错,是的,如果采用n(type)的话,是以字符为基础的,可以不考虑数据库出错的可能性,但同样也存在一个界面显示的问题,比如界面上的Address值,希望是100个字符,如果不进行中英文字数区分,最多将输入100个中文,从而占200 个字节空间,导致Adress在显示时会超过预料的空间,界面搞得不易控制。因此,此方案还是有可取之处的。

具体新方案实现:

1)将以下的代码包含到页面中:

script language=”javascript”

!–

String.prototype.len=function(){

return this.replace(/[^/x00-/xff]/g,”**”).length;

}

//Set maxlength for multiline TextBox

function setMaxLength(object,length)

{

var result = true;

var controlid = document.selection.createRange().parentElement().id;

var controlValue = document.selection.createRange().text;

var tempString=object.value;

var tt=””;

for(var i=0;ilength;i++)

{

if(tt.len()length)

tt=tempString.substr(0,i+1);

else

break;

}

if(tt.len()length)

tt=tt.substr(0,tt.length-1);

object.value=tt;

}

//Check maxlength for multiline TextBox when paste

function limitPaste(object,length)

{

var tempLength = 0;

if(document.selection)

{

if(document.selection.createRange().parentElement().id == object.id)

{

tempLength = document.selection.createRange().text.len();

}

}

var tempValue = window.clipboardData.getData(“Text”);

tempLength = object.value.len() + tempValue.len() – tempLength;

if (tempLength length)

{

tempLength -= length;

var tt=””;

for(var i=0;itempValue.len()-tempLength;i++)

{

if(tt.len()(tempValue.len()-tempLength))

tt=tempValue.substr(0,i+1);

else

break;

}

if(tt.len()=0)

{

window.event.returnValue=false;

}

else

{

tempValue=tt;

window.clipboardData.setData(“Text”, tempValue);

window.event.returnValue = true;

}

}

}

function PressLength()

{

if(event.srcElement.type==”text” || event.srcElement.type==”textarea” )

{

if(event.srcElement.length!=null)

setMaxLength(event.srcElement,event.srcElement.length);

}

}

function LimitLength()

{

if(event.srcElement.type==”text” || event.srcElement.type==”textarea” )

{

if(event.srcElement.length!=null)

limitPaste(event.srcElement,event.srcElement.length);

}

}

document.documentElement.attachEvent(‘onkeyup’, PressLength);

document.documentElement.attachEvent(‘onpaste’, LimitLength);

//–

/script

2)在需要控制的控件上添加length=”n”(n为要控制的字数)即可,如:

INPUT type=”text” length=”3″ TEXTAREA length=”20″ rows=”2″ cols=”20″/TEXTAREA asp:TextBox id=”TextBox1″ runat=”server” length=”7″/asp:TextBox asp:TextBox id=”TextBox2″ runat=”server” TextMode=”MultiLine” length=”10″/asp:TextBox 上面是HTML控件与Web控件的例子,只要加一个length就可以了。

个人建议:1)可以把这个脚本块放在js文件中,进行引用即可

2)可以把脚本放在BasePage中,这样每个页面都可以使用了

3)可以使用这些脚本块,开发专门的服务器端控件。

如何禁止js表单输入主键盘0-9上面的符号。

总结起来,用户有 4 种方法可以输入被禁止的符号:

1、键盘 Shit + [1-0]

2、键盘 Ctrl + V

3、鼠标右键 – 粘贴

4、第三方工具,例如 Firebug 直接修改 DOM

所以要为每一个可能性写相应的代码。下面代码中假设文本框 ID 为 my_text。

window.onload = function() {

// 获取元素

var ele = document.getElementById(“my_text”);

// 此函数将 1-0 数字上面的符号全部替换掉

function checkInput(ele) {

var regex = /[\!@#\$%\^\*\(\)_\+]+/g;

if(ele.value.length regex.test(ele.value)) {

ele.value = ele.value.replace(regex, ”);

}

}

// 当 shift 和 1-0 被按下时,return false

ele.onkeydown = function(e) {

e = e || window.event;

var k = (typeof e.which == “number”) ? e.which : e.keyCode;

if(e.shiftKey k = 48 k = 57) {

return false;

}

};

// 当 ctrl + v 被按下时,调用 checkInput 函数

ele.onkeyup = function(e) {

e = e || window.event;

var k = (typeof e.which == “number”) ? e.which : e.keyCode;

if(e.ctrlKey k == 86) {

checkInput(ele);

}

};

// 当用户使用右键进行粘贴后 或 当内容发生改变时

// 相当于 onblur,调用 checkInput 函数

ele.onchange = function() {

checkInput(ele);

};

};

如何用js 代码禁用键盘某个按键

form

input type=”text” id=”NotInputS” /

/form

script

document.getElementById(“NotInputS”).onkeypress=function(e){

var keynum=window.event ? e.keyCode : e.which; //获取键盘码

var keychar = String.fromCharCode(keynum);//获取键盘吗对应的字符

alert(keynum);

if(keychar==’S’ || keychar==’s’)//这个实例不能输出S,s

return false;//返回false表示不输出此字符

else

return true;//true就是输出

};

//请用onkeypress,不要用onkeydown/onkeyup

//除非你不在意字母的大小写

//onkeydown的S与s的按键码是一样的

/script

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/287250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-23 13:08
下一篇 2024-12-23 13:08

相关推荐

  • Python循环符合要求数字求和

    这篇文章将详细介绍如何通过Python循环符合要求数字求和。如果你想用Python求和但又不想手动输入数字,那么本文将是一个不错的选择。 一、使用while循环实现求和 sum =…

    编程 2025-04-29
  • 云智直聘 源码分析

    本文将会对云智直聘的源码进行分析,包括前端页面和后端代码,帮助读者了解其架构、技术实现以及对一些常见的问题进行解决。通过本文的阅读,读者将会了解到云智直聘的特点、优势以及不足之处,…

    编程 2025-04-29
  • Python基本数字类型

    本文将介绍Python中基本数字类型,包括整型、布尔型、浮点型、复数型,并提供相应的代码示例以便读者更好的理解。 一、整型 整型即整数类型,Python中的整型没有大小限制,所以可…

    编程 2025-04-29
  • Python打印数字三角形

    本文将详细阐述如何使用Python打印数字三角形,包括从基本代码实现到进阶操作的应用。通过本文的学习,您可以掌握Python的基础语法,同时加深对Python循环和函数的理解,提高…

    编程 2025-04-29
  • Python数字求和怎么写

    在Python中实现数字求和非常简单,下面将从多个方面对Python数字求和的实现方法做详细的阐述。 一、直接使用“+”符号进行求和 a = 10 b = 20 c = a + b…

    编程 2025-04-29
  • Python提取连续数字

    本文将介绍如何使用Python提取一个字符串中的连续数字。 一、使用正则表达式提取 正则表达式是一种可以匹配文本片段的模式。Python内置了re模块,可以使用正则表达式进行字符串…

    编程 2025-04-29
  • Python中如何判断字符为数字

    判断字符是否为数字是Python编程中常见的需求,本文将从多个方面详细阐述如何使用Python进行字符判断。 一、isdigit()函数判断字符是否为数字 Python中可以使用i…

    编程 2025-04-29
  • Java和Python哪个功能更好

    对于Java和Python这两种编程语言,究竟哪一种更好?这个问题并没有一个简单的答案。下面我将从多个方面来对Java和Python进行比较,帮助读者了解它们的优势和劣势,以便选择…

    编程 2025-04-29
  • Python如何将字符串1234变成数字1234

    Python作为一种广泛使用的编程语言,对于数字和字符串的处理提供了很多便捷的方式。如何将字符串“1234”转化成数字“1234”呢?下面将从多个方面详细阐述Python如何将字符…

    编程 2025-04-29
  • Python实现统计100以内能被7整除的数字个数

    本文将从以下几个方面详细阐述如何使用Python来实现统计100以内能被7整除的数字个数。具体内容包括: 一、range函数 Python中的range函数是用来生成一个数字序列的…

    编程 2025-04-28

发表回复

登录后才能评论