日期:2014-05-16  浏览次数:20329 次

脚本(js)控制文本输入

脚本(js)控制页面输入

    博客分类:
  • [网站分类]JavaScript
脚本GoogleJavaScriptStrutsIE


简单介绍:

IE中的event有很多keyCode,并且在不同的事件(onkeydown,onkeypress,onkeyup)中同一个键的keyCode也有可能不同。

onkeydown Event??? Fires when the user presses a key.
??? 对于字母大小写不区分keyCode,a-z/A-Z的keyCode都是65-90
??? 对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105

onkeypress Event??? Fires when the user presses an alphanumeric key.
??? 与onkeydown刚好相反
??? 对于字母大小写区分keyCode,a-z/A-Z的keyCode都是65-90
??? 对于数字和小键盘的数字区分keyCode,0-9的keyCode是48-57,小键盘的数字0-9为96-105

onkeyup Event??????? Fires when the user releases a key.


1、只能输入字母、数字,且把小写字母转换成大写字母
<script language="javascript">
function checkChar() {
??? if ((event.keyCode < 48 && event.keyCode != 45)
??????? || (event.keyCode > 57 && event.keyCode < 65)
??????? || (event.keyCode > 90 && event.keyCode < 97)
??????? || event.keyCode > 122) {
??????? event.returnValue = false;
??? }???
??? if (event.keyCode >= 97 && event.keyCode <= 122) {
??????? event.keyCode -= 32;
??? }
}

//因为这种做法不能防止用户拷贝中文,或者采用中文输入法输入中文
//所以只能在提交时,再次检查一下文本的值,并进行大小写转换
function check() {????
??? var objVal = document.all("name").value;
??? var charCode = "";
??? var returnObj = "";
??? for (var i = 0; i < objVal.length; i++) {
??????? charCode = objVal.charCodeAt(i);???????
??????? if ((charCode < 48 && charCode != 45)
??????????? || (charCode > 57 && charCode < 65)
??????????? || (charCode > 90 && charCode < 97)
??????????? || charCode > 122) {
??????????? alert("'" + objVal.charAt(i) + "' 该字符不合法,请输入字母、数字或中划线-!");
??????????? return false;???????????????????????
??????? }
??????? if (charCode >= 97 && charCode <= 122) {
??????????? charCode -= 32;
??????? }
??????? returnObj += String.fromCharCode(charCode);
??? }
??? document.all("name").value = returnObj;
??? return true;???
}
</script>

<input type="text" name="name" onkeypress="checkChar()" onpaste="return false;">
<input type="button" name="btn" onclick="check()">

2、以下是在网上转载的别人的代码,觉得比较好,就摘抄下来
<script language=jscript>
function number() {
??? var char = String.fromCharCode(event.keyCode);
??? alert("number:"+char);
??? var re = /[0-9]/g;
??? event.returnValue = char.match(re) != null ? true : false
}

function filterInput() {
??? alert("filterInput:"+event.type);
??? if (event.type.indexOf("key") != -1) {
??????? var re = /37|38|39|40/g
??????? if (event.keyCode.toString().match(re)) return false
??? }???
??? event.srcElement.value = event.srcElement.value.replace(/[^0-9]/g, "")
}

function filterPaste() {
??? var oTR = this.document.selection.createRange();
??? var text = window.clipboardData.getData("text");
??? oTR.text = text.replace(/[^0-9]/g, "");
}
</script>

<input onkeypress="number()" onkeyup="filterInput()" onchange="filterInput()" onbeforepaste="filterPaste()" onpaste="return false" style="ime-mode: disabled">

另外一点:
<script type="text/javascript"><!-- google_ad_client = "pub-6770445892601887"; /* 468x60, 创建于 09-11-19 */ google_ad_slot = "4437639877"; google_ad_width = 468; google_ad_height = 60; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 本人用的是struts,本来想采用第二种方法的,结果struts居然不支持text的onpaste方法,郁闷那。