javascript 正则表达式 很奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:26:46
<script>
function istel(){
var tel = document.reg.tel.value;
var re=/^\d{3,4}-\d{6,8}$/g
//re.compile(tel);
var te=re.test(tel);
if(!te){
alert('电话格式只能是 \'XXX\'-\'XXXXXX \'');
return false;
}
return true;
}
function check(){
if(!istel())return false;
document.reg.submit();
}
</script>
<form name="reg" id="reg" action="#" method="get">
电话:<input type="text" name="tel" id="tel"/><br/>
<input type="button" value="提交" onclick="check()">
</form>
在IE6中运行很正常,但是在Firefox2.0中运行,第一次提交是正常的,如果把document.reg.submit(); 注释掉,连续提交两次,te=re.test(tel);无论你输入对不对,te这个值会true 和false交替出现 。问这是为什么?是我的代码有问题还是Firefox的BUG?

是元素定位问题,FireFox对var tel = document.reg.tel.value;这位形式的定位支持不是很好。
因为这种定位方式本来就不是国际标准,而是IE独创的
楼主可以参考下DHTML标准
可以修改为var tel = document.getElementById("tel").value
试试看

哪里奇怪?

http://dean.edwards.name/
用cssQuery定位元素,很方便
var tel=cssQuery('#reg #tel')[0].value;