日期:2014-05-17  浏览次数:20622 次

js表单获取焦点的问题
我写了一个注册表单 就拿用户名和密码为例吧
  用户名 文本框丢失焦点会调用一个方法来验证是否为空 把错误信息用innerHTML的方法插入旁边的表格。最后还得到用户框的焦点全选select() 返回false;
  密码框 丢失焦点也一样会调用一个方法来验证密码是否为空 把错误信息用innerHTML的方法插入旁边的表格。 最后 还是获取到密码框的焦点全选select() 返回false;



  问题来了:
  我网页打开时候默认的焦点是在用户名框。
  如果我不写用户名而直接去点密码框 悲剧就产生了,在旁边的表格中提示出了两个框的输入错误信息,
  两个框框相互争夺焦点 成了循环了。。。

  不知道各位出现过这个情况没有。

  说是为了人性化 输入有误后会在错误的文本框选中方便用户再次修改输入。
 
  难道不把获取焦点那句全选删了 就没有别的方法么?

   

 

------解决方案--------------------
你点击密码框时 应该只有用户名框丢失焦点啊 密码框的错误提示 也会出现吗 不会吧 密码框的焦点也没丢失啊 ????

------解决方案--------------------
贴代码,从科学的角度来讲,不会有这种问题
------解决方案--------------------
Java code

得到用户框的焦点全选select()

------解决方案--------------------
还有一个问题是:将所有的检查文本框的js写在一个js类里面。。
出现争夺焦点。是因为你onsubmit="return checkU()&&checkP()",同时调用了两个方法。。都去检查。。

正确的逻辑应该是。。只要检查出用户框为空,,下面的密码框就不用检查了。。分先后顺序。
还有就是。。用户框检查都没通过。。又去检查密码框没有必要。
------解决方案--------------------
select()都改为focus(),得到焦点。。。