使用js判断表单输入的数据类型,有点不如意,进来帮帮忙吧! 用onkeypress控制输入类型难度有点高还有就是不能阻止用户向输入框Copy+Paste不符要求的内容。若禁止Copy+Paste又带给用户不乐意的限制-----个人之见 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前几天做了这个东西,可以限制输入---------------------------------------<style>input{ border:1px solid black;}</style><SCRIPT language="javascript"><!--start/* * added by LxcJie 2004.6.11 * 约束输入框的内容 * 适用于IE5.0及以上版本 * oObj: 输入框控件对象 * reg: 正则表达式 * isChinese:是否允许打开输入法,true 允许打开,即允许输入中文,false 不能打开,默认为不允许打开 * usage: * * //只能输入数字和大小写字母 * <BODY onLoad="regInputRestriction(document.all.txt,/^[0-9a-zA-Z]*$/)"> * <input id="txt"> * </BODY> */function regInputRestriction(oObj,reg,isChinese){ function regInput(obj, reg, inputStr) { var docSel = document.selection.createRange(); if (docSel.parentElement().tagName.toLowerCase() != "input") return false; oSel = docSel.duplicate(); oSel.text = ""; var srcRange = obj.createTextRange(); oSel.setEndPoint("StartToStart", srcRange); var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length); return reg.test(str); } //限制输入法是否允许打开 if(isChinese == null) isChinese = false; if(isChinese) oObj.style.imeMode = "auto"; else oObj.style.imeMode = "disabled"; //注册事件 oObj.onkeypress = function() { return regInput(this,reg,String.fromCharCode(event.keyCode));//输入时激发 } oObj.onpaste = function() { return regInput(this,reg,window.clipboardData.getData('Text'));//粘贴时激发 } oObj.ondrop = function() { return regInput(this,reg,event.dataTransfer.getData('Text'));//拖拽时激发 }}//--></SCRIPT><script language="javascript">function initForm(){ regInputRestriction(document.all.onlyNumber,/^[0-9]*$/); regInputRestriction(document.all.lowerLetter,/^[a-z]*$/); regInputRestriction(document.all.upperLetter,/^[A-Z]*$/); regInputRestriction(document.all.letter,/^[a-zA-Z]*$/); regInputRestriction(document.all.numberLetter,/^([0-9a-zA-Z])*$/); regInputRestriction(document.all.chinese,/^[\u4E00-\u9FA5]*$/,true); regInputRestriction(document.all.twoDigFloat,/^\d*\.?\d{0,2}$/ ); regInputRestriction(document.all.dateNum,/^\d{1,4}([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/); regInputRestriction(document.all.partEn,/^[a-e]*$/); regInputRestriction(document.all.notSpecialLetter,/^[^|#]*$/);}</script><BODY onLoad="initForm()" style="font-size:12px;"> <INPUT id="onlyNumber"> 只能输入数字<br><br> <INPUT id="lowerLetter"> 只能是小写字母<br><br> <INPUT id="upperLetter"> 只能是大写字母<br><br> <INPUT id="letter"> 只能是字母<br><br> <INPUT id="numberLetter"> 只能是字母数字<br><br> <INPUT id="chinese"> 只能是中文(bug:紫光拼音可以输入英文)<br><br> <INPUT id="twoDigFloat"> 只能是两位小数<br><br> <INPUT id="dateNum"> 只能是日期型<br><br> <INPUT id="partEn"> 是部分英文(a-e)<br><br> <INPUT id="notSpecialLetter"> 不能输入 # 和 |<br><br></BODY>----------------------------------------- 第一个问题:把onKeyPress改成onKeyUp就OK了;第二个问题:用对象引用的完全限定名称比较好,即document.formName.textName.value = "";第三个问题:正则表达式基础: 模式,是正则表达式最基本的元素,可以很简单,也可以非常复杂。 ^ : 特殊字符,表示模式只匹配那些以^之后的字母做开头的字符串; $ : 特殊字符,表示模式只匹配那些以$之前的字母做结尾的字符串; \t、\n、\r等表示转义字符;(如\\就表示\本身,\"表示") [a-z] : 匹配所有小写字母; [A-Z] : 匹配所有大写字母; [a-zA-Z] : 匹配所有字母; [0-9] : 匹配所有数字; [^X...] : 在^后面的是匹配除X...之外所有的字符; . : 特殊字符,表示除了换行符\n之外所有的字符; {X,Y} : 表示前面的字符最少出现X次,最多出现Y次;而且{0,1}与?效果相等;{0,}与*效果相等;{1,}与+效果相等;所以,综上所述,例如:^\-?[0-9]*\.?[0-9]*$ : 匹配所有的小数;^[^0-9].+@.+\..+$ : 匹配所有的E-Maile地址;也可以将模式的不同部分加以区分,如: ^([^0-9].+)@(.+)\.(.+)$ 谢谢 Apexivan(最爱茉莉花) 和楼上的其他朋友大家继续给点意见好吗? 怎么判断输入的是时间格式啊22:00:00<script>function isTime(str){ var reg = /^(\d{1,2})(\:)(\d{1,2})\2(\d{1,2})$/; result = str.match(reg); if(result == null)return false; str2 = "2004\/1\/1 "+result[1]+":"+result[3]+":"+result[4]; d = new Date(str2); if(isNaN(d))return false; else return true;}alert(isTime("25:00:20"))alert(isTime("22:00:00"))</script> 谢谢大家,特别感谢Apexivan(最爱茉莉花) ,wanghr100(灰豆宝宝.net)我给分了 有没有一次显示12个月份的js日历啊 textarea中的图片问题 求教JavaScript方面的教材 很无奈的一个问题 怎样获取鼠标所在表的行号? 谁能说明下下这个Function里的代码是起什么做用? 原代码不变的情况下,如何去掉,符号 请问这种词云怎么实现? 请教关于jstree展开节点加载子节点问题 求大家帮忙写出两个正则,谢谢 一个setTimeout的问题! 如何在页面1中动态生成页面2里所有FORM元素
<style>
input
{
border:1px solid black;
}
</style>
<SCRIPT language="javascript">
<!--start
/*
* added by LxcJie 2004.6.11
* 约束输入框的内容
* 适用于IE5.0及以上版本
* oObj: 输入框控件对象
* reg: 正则表达式
* isChinese:是否允许打开输入法,true 允许打开,即允许输入中文,false 不能打开,默认为不允许打开
* usage:
*
* //只能输入数字和大小写字母
* <BODY onLoad="regInputRestriction(document.all.txt,/^[0-9a-zA-Z]*$/)">
* <input id="txt">
* </BODY>
*/
function regInputRestriction(oObj,reg,isChinese)
{
function regInput(obj, reg, inputStr)
{
var docSel = document.selection.createRange();
if (docSel.parentElement().tagName.toLowerCase() != "input")
return false;
oSel = docSel.duplicate();
oSel.text = "";
var srcRange = obj.createTextRange();
oSel.setEndPoint("StartToStart", srcRange);
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
return reg.test(str);
}
//限制输入法是否允许打开
if(isChinese == null)
isChinese = false;
if(isChinese)
oObj.style.imeMode = "auto";
else
oObj.style.imeMode = "disabled";
//注册事件
oObj.onkeypress = function()
{
return regInput(this,reg,String.fromCharCode(event.keyCode));//输入时激发
}
oObj.onpaste = function()
{
return regInput(this,reg,window.clipboardData.getData('Text'));//粘贴时激发
}
oObj.ondrop = function()
{
return regInput(this,reg,event.dataTransfer.getData('Text'));//拖拽时激发
}
}
//-->
</SCRIPT>
<script language="javascript">
function initForm()
{
regInputRestriction(document.all.onlyNumber,/^[0-9]*$/);
regInputRestriction(document.all.lowerLetter,/^[a-z]*$/);
regInputRestriction(document.all.upperLetter,/^[A-Z]*$/);
regInputRestriction(document.all.letter,/^[a-zA-Z]*$/);
regInputRestriction(document.all.numberLetter,/^([0-9a-zA-Z])*$/);
regInputRestriction(document.all.chinese,/^[\u4E00-\u9FA5]*$/,true);
regInputRestriction(document.all.twoDigFloat,/^\d*\.?\d{0,2}$/ );
regInputRestriction(document.all.dateNum,/^\d{1,4}([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/);
regInputRestriction(document.all.partEn,/^[a-e]*$/);
regInputRestriction(document.all.notSpecialLetter,/^[^|#]*$/);
}
</script>
<BODY onLoad="initForm()" style="font-size:12px;">
<INPUT id="onlyNumber"> 只能输入数字<br><br>
<INPUT id="lowerLetter"> 只能是小写字母<br><br>
<INPUT id="upperLetter"> 只能是大写字母<br><br>
<INPUT id="letter"> 只能是字母<br><br>
<INPUT id="numberLetter"> 只能是字母数字<br><br>
<INPUT id="chinese"> 只能是中文(bug:紫光拼音可以输入英文)<br><br>
<INPUT id="twoDigFloat"> 只能是两位小数<br><br>
<INPUT id="dateNum"> 只能是日期型<br><br>
<INPUT id="partEn"> 是部分英文(a-e)<br><br>
<INPUT id="notSpecialLetter"> 不能输入 # 和 |<br><br>
</BODY>-----------------------------------------
第二个问题:用对象引用的完全限定名称比较好,即document.formName.textName.value = "";
第三个问题:正则表达式基础:
模式,是正则表达式最基本的元素,可以很简单,也可以非常复杂。
^ : 特殊字符,表示模式只匹配那些以^之后的字母做开头的字符串;
$ : 特殊字符,表示模式只匹配那些以$之前的字母做结尾的字符串;
\t、\n、\r等表示转义字符;(如\\就表示\本身,\"表示")
[a-z] : 匹配所有小写字母;
[A-Z] : 匹配所有大写字母;
[a-zA-Z] : 匹配所有字母;
[0-9] : 匹配所有数字;
[^X...] : 在^后面的是匹配除X...之外所有的字符;
. : 特殊字符,表示除了换行符\n之外所有的字符;
{X,Y} : 表示前面的字符最少出现X次,最多出现Y次;而且{0,1}与?效果相等;{0,}与*效果相等;{1,}与+效果相等;所以,综上所述,例如:
^\-?[0-9]*\.?[0-9]*$ : 匹配所有的小数;
^[^0-9].+@.+\..+$ : 匹配所有的E-Maile地址;
也可以将模式的不同部分加以区分,如: ^([^0-9].+)@(.+)\.(.+)$
function isTime(str)
{
var reg = /^(\d{1,2})(\:)(\d{1,2})\2(\d{1,2})$/;
result = str.match(reg);
if(result == null)return false;
str2 = "2004\/1\/1 "+result[1]+":"+result[3]+":"+result[4];
d = new Date(str2);
if(isNaN(d))return false;
else return true;
}
alert(isTime("25:00:20"))
alert(isTime("22:00:00"))
</script>
我给分了