文本框中的焦点不在FF中的警报之后
focus in textbox not going after alert in FF?
我正在用java脚本进行长度验证。如果输入的长度很短,我会显示一个警告,然后我想在文本字段中重新设置焦点。它在IE中工作,但在FF中不工作。我在谷歌上搜索了很多,但没有解决方案可以工作plz指南和帮助我。
function IsLengthOK(_title,_control,_length)
{
if(_control.value.length < _length)
{
alert("'"+ _title +"'" + " must be minimum "+_length+" characters in length");
document.getElementById('txtUserName').focus();
return(false);
}
}
我在这里对文本框的模糊事件调用这个函数:
if(IsLengthOK("Registration Username",this,6))
{
// do something next.
}
我的文本框的HTML是:
<input id="txtUserName" type="text" tabindex="1" name="txtUserName" style="background: none repeat scroll 0% 0% white;">
function IsLengthOK(_title,_control,_length) {
if(_control.value.length < _length) {
alert("'" + _title + "'" + " must be minimum " + _length + " characters in length");
setTimeout(function() {
document.getElementById('txtUserName').focus();
}, 0);
return false;
}
}
这在我的Firefox中有效。在调用setTimeout
之后,它将关注对象#txtUserName。
它在Firefox 4中运行良好。
jsFiddle。
这里有一个建议重写你的函数。。。
function IsLengthOK(_title, _control, _length) {
if (_control.value.length < _length) {
alert("'" + _title + "'" + " must be minimum " + _length + " characters in length");
_control.focus();
return false;
}
return true;
}
jsFiddle。
- 您正在传递对元素的引用,但随后再次选择它。没有理由这么做。这只会使维护更加困难。它还将把这个函数绑定到您的一个元素上,因为它可以更灵活
- 在括号中返回
false
。这是没有必要的。此外,如果条件为true,它将返回false
,因此它将理所当然地返回true
(而不是undefined
( - 如果您有一堆这样的验证实用程序函数,那么将它们命名为
Validator
对象的方法可能是一个好主意 - 为什么在变量前面加上
_
?你应该放下它们
不要像现在这样使用document.getElementById
:
document.getElementById('txtUserName').focus();
使用jquery选择器,然后提取原始元素,就像这样
$('#txtUserName')[0].focus();
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- FF视图源|脚本高亮显示为红色
- FF和Chromium中CSS样式按钮的外观差异
- Javascript复选框函数:;缺少:在属性id之后"
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 正在链接添加了以下内容::在之后
- JQuery hide()在show()之后不起作用,反之亦然
- 未执行Ajax循环的Javascript之后的代码
- 如何在`window.open`之后执行回调
- 在FF和IE中使用vimeo播放器的问题-加载flash播放器而不是使用HTML5播放器
- 如何在一个元素动画之后延迟
- 在XMLHttpRequest之后重新初始化jQuery
- 文本框中的焦点不在FF中的警报之后