關於select和focus的問題

junguo 2002-09-13 06:53:54
1.怎麼樣可以---只要用戶不輸入正確信息就使光標停留在文本框內.
在點了其他文本框之後也不會觸發其他文本框的事件..
2.可能說的不明白..看下面的例子:
<html><head>
<script language="JavaScript">
function Test()
{
var iLenth=document.all("t1").length;
for(var i=0;i<iLenth;i++)
{
if(document.all("t1",i).value!="222")
{
alert("Error");
document.all("t1",i).select();
document.all("t1",i).focus();
return ;
}
}

}
</script>
</head>
<body>
<input type="text" name="t1" id="text1" value="111" onblur="Test()">
<input type="text" name="t1" id="text2" value="111" onblur="Test()"/>
<input type="text" name="t1" id="text2" value="111" onblur="Test()"/>
</body>
</html>

在開始用戶是隨機選取文本框..但是在離開時候.判斷是否等於正確.如果不正確.就
讓你其修改..可是這個時候如果用戶點了其他的框.就會出現死循環.有明白的給看看.

謝謝了
...全文
313 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexxing 2002-09-14
  • 打赏
  • 举报
回复
还发现一个“毛病”:
如果用 onblur,用户不想输入了,关闭浏览器,也会蹦出个 alert!
惹不起还不让人家躲?

我觉得从用户角度考虑,宁可把其它所有控件都加上 onfocus (其实一般你只需要给同一个 FORM 的控件加),也比把这几个控件加 onblur 好
alexxing 2002-09-14
  • 打赏
  • 举报
回复
另外,由于你的循环顺序:
for(var i=0;i<iLenth;i++)
就规定了用户必须将前面的input输入正确,才可能输入后面的input(否则就会被select强制转到前面的控件),即用户只能按顺序从前往后输入,似乎有些太“霸道”
alexxing 2002-09-14
  • 打赏
  • 举报
回复
“可是這個時候如果用戶點了其他的框.就會出現死循環”

看不出哪里会死循环,多次循环的确会有,主要是因为焦点从控件A转到控件B时,浏览器总是先触发A的onfocus,再触发B的onblur

对于
<input type="text" name="t1" id="text1" value="111" onblur="Test()">
<input type="text" name="t1" id="text2" value="111" onblur="Test()">

假设原本focus=text2(表示焦点在text2),且text2内容错误,用户点击text1:

text1.onfocus()
text2.onblur()
// 此事件判断 text2 错误,所以执行 text2.select() 部分
text2.onfocus()
// 因为 text2.select()
text1.onblur()
// 因为 text2.select()
// 而且由于 text2 还没改过来,还是错的
// 所以其中又执行了一次 text2.select() 部分
// 所以会有两次 alert("Error")
(可能跟浏览器版本有关,不知道你的机器上是不是同样的现象?)


也许该换种检查方式?
qiushuiwuhen 2002-09-13
  • 打赏
  • 举报
回复
<html><head>
<script language="JavaScript">
var obj=null;
function Test()
{
if(obj!=null){obj=null;return;}
var iLenth=document.all("t1").length;
for(var i=0;i<iLenth;i++)
{
if(document.all("t1",i).value!="222")
{
alert("Error");
obj=document.all("t1",i);
obj.select();
return ;
}
}

}
</script>
</head>
<body>
<input type="text" name="t1" id="text1" value="111" onblur="Test()">
<input type="text" name="t1" id="text2" value="111" onblur="Test()"/>
<input type="text" name="t1" id="text2" value="111" onblur="Test()"/>
</body>
</html>

87,997

社区成员

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

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