Firefox下面为什么不能用呢????着急.....

bianmazi 2007-12-24 12:40:07
Firefox中为什么不能用呢?

<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]*$/);
}
</script>
<BODY onLoad="initForm()">
<INPUT id="onlyNumber"> 只能输入数字<br><br>
</BODY>

以上代码在火狐浏览器下面为什么不好用呢?该怎么改呢?
...全文
549 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
换了之后还是不能用在firefox下面的啊.我是这么处理的..
document.all.onlyNumber 替换为:document.getElementById("onlyNumber")
在火狐下仍然是不好使的..
tantaiyizu 2007-12-24
  • 打赏
  • 举报
回复
document.getElementById("onlyNumber")
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
请问是这样用吗?
例如:document.all.onlyNumber 替换为:document.getElementById.onlyNumber吗?
tantaiyizu 2007-12-24
  • 打赏
  • 举报
回复
regInputRestriction(document.all.onlyNumber,/^[0-9]*$/);

---
document.all 只在ie下有用
换成 document.getElementById("")即可!
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
谢谢楼主。搞定了。。。
  • 打赏
  • 举报
回复
我帮你改了一下,在ff不能粘贴,只能输入.
但是有一个小问题,ff时就是把内容拖进文本框时不知道怎么限制

<html> 
<head>
<title>
TD Testing !
</title>
</head>
<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";

//注册事件,在ie下时注册onkeypress,ff时改为注册onkeydown事件,要不无法获取event的keyCode
if(document.all)
{
oObj.onkeypress=function()
{
return regInput(this,reg,String.fromCharCode(event.keyCode));//输入时激发
}
}
else
oObj.onkeydown = EventHandler; //ff改为onkeydown事件

function EventHandler(e)//===========此为ff的方法
{
e=e||event;
if(e.ctrlKey)//禁止粘贴
return false;
//不为“<-键”,“Delete键”和方向键时
else if(e.keyCode!=8&&e.keyCode!=46&&e.keyCode!=37&&e.keyCode!=38&&e.keyCode!=39&&e.keyCode!=40)
return reg.test(String.fromCharCode(e.keyCode));
}
//下面为ie的方法,在ff下不知道怎么限制
oObj.onpaste = function()
{
return regInput(this,reg,window.clipboardData.getData('Text'));//粘贴时激发
}

oObj.ondrop = function(e)
{
e=e||event;
return regInput(this,reg,event.dataTransfer.getData('Text'));//拖拽时激发
}
}
//-->
</SCRIPT>
<script language="javascript">
function initForm()
{
regInputRestriction(document.getElementById('onlyNumber'),/^[0-9]*$/);
}
</script>
<BODY onLoad="initForm()">
<INPUT id="onlyNumber"> 只能输入数字 <br> <br>
</BODY>
</html>
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
不知道该改成对应的什么方法啊?没用过ff的,最ff知知甚少..
  • 打赏
  • 举报
回复
event对象也不正确
  • 打赏
  • 举报
回复
1
ff好象不支持onpaste和ondrag

2
你创建Range对象错误,而且使用了ff不支持的Range对象的方法和属性,具体ff的Range对象是方法和属性我也不搞不清楚.
下面是创建range对象的代码
var docSel;
if(docoment.createRange)//ff和标准2级dom
docSel=document.createRange();
else if(document.selection&&document.selection.createRange)//ie
docSel=document.selection.createRange();
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
没用过ff啊,不知道还有哪些在ff下不支持啊.恳请高手指示下啊.在线等.急急急
bianmazi 2007-12-24
  • 打赏
  • 举报
回复
大家谁见过呢?我没有用过firefox真不知道哪些元素在ff上面不支持啊.
高手给个指示吧...
rjzou2006 2007-12-24
  • 打赏
  • 举报
回复
哪就是还有其它元素
在FF上不支持了??
tantaiyizu 2007-12-24
  • 打赏
  • 举报
回复
parentElement()加个括号干什么?

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧