JS让文本框获得焦点

happyxiaowuge 2010-06-25 09:36:12
我有一页面,页面中有2个div--“div1” 和“div2”,页面加载时div2的display属性为none,
div1中有一按扭btn1和一文本框txt1,div2中有一按钮btn2,要求点击btn1的时候,div1隐藏,显示div2
点击btn2的时候div2隐藏,显示div1,同时txt1获得焦点
我为2个按钮的onclik事件写了一个JS方法:
<script>
var flag=0;
function closeOrShowPo() {
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
if (flag == 1) {
div1.style.display = "block";
div2.style.display = "none";
flag = 0;
}
else {
div1.style.display = "none";
div2.style.display = "block";
flag = 1;
var txt1 = document.getElementById("txtPalletCartonCode");
txt1.focus();
}

}
</script>
结果调试时报这样的错“由于该控件目前不可见、未启用或其类型不允许,因此无法将焦点移向它。”
这种情况该怎么解决?
...全文
8713 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lecheng7362 2012-05-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 9 楼 hjhuacandy 的回复:
我曾经看也这样写,报错,但是把他拆分成两个方法,执行OK


我试了写成这样
<script language="javascript" type="text/javascript">
function closeDiv2() {
var div1 = document.getElementById("div1");
var……
[/Quote]
逻辑都写错了好吧、你应该是点击div2的按钮时候显示div1之后再让文本框获得焦点
不然、div1都隐藏了、获得焦点也没有意义了。你调试时候报那个错误很明了了
之后你分成两个方法来写、逻辑才写对了、如果需要使用第一种方式、可以改成下面这段试试。

<script>
var flag=0;
function closeOrShowPo() {
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
if (flag == 1) {
div1.style.display = "block";
div2.style.display = "none";
flag = 0;
var txt1 = document.getElementById("txtPalletCartonCode");
txt1.focus();
}
else {
div1.style.display = "none";
div2.style.display = "block";
flag = 1;

}

}
</script>
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ywp258 的回复:]
友情帮顶~!
[/Quote]
thank you!
  • 打赏
  • 举报
回复
写连个FUNCTION 一个是 btn1调 一个是btn2调 , 这样就可以了
焦点 是 document.getElementById("txt").fock();

如果非的写成一个函数 那就
判断
if(document.getElementById("div1").style.display == "block")
{
那就把div1隐藏
那就把div2显示

}
else
{
那就把div2隐藏
那就把div1显示
}
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hjhuacandy 的回复:]
我曾经看也这样写,报错,但是把他拆分成两个方法,执行OK
[/Quote]

我试了写成这样
<script language="javascript" type="text/javascript">
function closeDiv2() {
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
div1.style.display = "block";
div2.style.display = "none";
var txt2 = document.getElementById("txt1");
txt2.focus();

}
function ShowDiv2() {
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
div1.style.display = "none";
div2.style.display = "block";
}
</script>
然后分别调用,还真可以了。
好神奇哦,什么原理啊
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hjhuacandy 的回复:]
我曾经看也这样写,报错,但是把他拆分成两个方法,执行OK
[/Quote]
我试试
QQlvbo 2010-06-25
  • 打赏
  • 举报
回复
应该是隐藏了 不行就一个一个试试就出来了
aluogang 2010-06-25
  • 打赏
  • 举报
回复
div1,div2加上runnt=server
hjhuacandy 2010-06-25
  • 打赏
  • 举报
回复
我曾经看也这样写,报错,但是把他拆分成两个方法,执行OK
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ailin84 的回复:]
不都通知你了么 要么没显示,被隐藏了

要么未启用
[/Quote]
求实现要求的办法
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 a8935523 的回复:]
先判断下div1的状态是否是显示。
[/Quote]

按下按钮前div1的display属性是none,按下之后就变成block了。

求实现要求的办法
happyxiaowuge 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kelvin0926 的回复:]
可以把他们都显示出来,把DIV宽高设置为0px,0px试试(比较猥琐)
[/Quote]
确实比较猥琐,有没有别的办法?
ailin84 2010-06-25
  • 打赏
  • 举报
回复
不都通知你了么 要么没显示,被隐藏了

要么未启用
a8935523 2010-06-25
  • 打赏
  • 举报
回复
先判断下div1的状态是否是显示。
kelvin0926 2010-06-25
  • 打赏
  • 举报
回复
可以把他们都显示出来,把DIV宽高设置为0px,0px试试(比较猥琐)
guozhaoyou1 2010-06-25
  • 打赏
  • 举报
回复
txtPalletCartonCode 是不是被隐藏掉了 隐藏属性了html就不会生成txtPalletCartonCode控件

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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