由于该控件目前不可见、未启用或类…

一·由于该控件目前不可见、未启用或类型不允许,因此无法将焦点移向它

此类问题是因为在js中调用了*.focus()方法,而*元素却是一个'hidden'的元素类型,或者*的祖宗节点是被diaplay=none掉的元素,如果此时再调用的话,浏览器报错无法将焦点移向它就不足为怪了。

错误源码如下

function validateForm(){
var inputs = document.getElementsByTagName_r("input");
for(var i=0;i
 var inputValue = inputs[i].value.Trim();
 if(inputs[i].type!='submit'&&inputs[i].type!='reset'){
  if(inputValue.length!=0){
   continue;
  }else{
   inputs[i].focus();
   inputs[i].select();   
   alert('【'+inputs[i].previousSibling.nodeValue+'】选项不能为空!');
   return false;   
  
 }
}
return true;
}

 

因为要对页面的表单进行进行非空验证,因为表单个数太多,所以采用循环办法,为了方便,在校验不通过后,将焦点聚焦在为空的元素上,在应用中有使用了其他的一个自定义的alert()控件,要生成一个div来显示提示信息,在此div中有

var sFunc = ' ';
var sClose = '';
这么三个input元素,当用户点击这三个按钮之一后将隐藏该div,因为在校验中没有排除对button和image的校验,当然他们是没有value值的,所以要提示框关闭后要将焦点聚焦到dialogOk上自然就报错了。

有两种解决方案:

1.是在关闭提示框后将这三个input元素直接remove掉,那将对原来的页面没有任何影响,在提示是再生成它们

2.if(inputs[i].type!='submit'&&inputs[i].type!='reset')条件改为if(inputs[i].type!='submit'&&inputs[i].type!='reset'&&inputs[i].type!='button'&&inputs[i].type!='image')或者if(input[i].type='text')即可

 

 

二·类型不匹配

错误代码如下:

$('dialogOk').parentNode.removeChild('dialogOk');
$('dialogCancel').parentNode.removeChild('dialogCancel');
$('dialogBoxClose').parentNode.removeChild('dialogBoxClose');

显然应改为下面的

$('dialogOk').parentNode.removeChild($('dialogOk'));
$('dialogCancel').parentNode.removeChild($('dialogCancel'));
$('dialogBoxClose').parentNode.removeChild($('dialogBoxClose'));

 

参考上面的例子:

总结是由于iframe设置隐藏,导致在初始化页面的时候出现这种问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值