我正在使用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;">
答案 0 :(得分:3)
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。
答案 1 :(得分:1)
在Firefox 4中它适用于我。
以下是对您的功能的建议重写...
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;
}
false
。这不是必要的。此外,如果条件为真,则返回false
,因此它会有理由否则应该返回true
(而不是undefined
)。Validator
对象的方法可能是个好主意。例如。_
为变量添加前缀?你应该放弃它们。答案 2 :(得分:0)
而不是使用document.getElementById
,就像你在这里一样:
document.getElementById('txtUserName').focus();
使用jquery选择器然后提取原始元素,就像这样。
$('#txtUserName')[0].focus();