错误后,字段不会聚焦

时间:2013-08-21 15:05:42

标签: javascript html

可能会出现一些我再也找不到的东西。但是,一如往常,任何帮助都会受到赞赏。

我的javascript错误消息和焦点设置适用于提交时的所有验证功能,但我无法通过onblur验证获得焦点。正确显示错误消息,但焦点将转到表单中的下一个字段。

这是我首先在Javascript中使用的字段的代码:

function validatexxxx()
{
var e = document.getElementById('xxxxNumber');
//check to see if the xxxx number is already in use.
for (i = 0; i < xxxxArray.length;i++) {

if (e.value == xxxxArray[i]) {
    alert("That xxxx Number is already in use!");
        e.focus();
        return false;
    }//end if e.value = xxxxarray 

}//end for loop
var eText = e.value;
if (eText.length >= 15) {

    alert("xxxx Number must be less than 15 characters long!");
    e.focus();
    return false;
}
    return true;

}

输入的html:

<tr><td>xxxx No.: </td><td><input type="textbox" id="xxxxNumber"
name="xxxxNumber" onblur="return validatexxxx();"/> </td> </tr>

3 个答案:

答案 0 :(得分:3)

alert()导致焦点消失。显示弹出窗口后,您将设置焦点。但是,当用户需要在出现的弹出窗口中单击OK时,焦点将丢失。

答案 1 :(得分:2)

尝试从“模糊”处理程序强制对焦本质上存在问题。试试这个:在超时处理程序中包含对.focus()的调用。这将使“模糊”事件在尝试设置焦点之前完成:

setTimeout(function() { e.focus(); }, 1);

此外,alert()也可能存在问题,尤其是在Safari中。那个浏览器曾经(或过去曾经没有尝试过)倾向于想象“警报”窗口的出现意味着主浏览器窗口失去了焦点。之后,Safari将完全忽略对.focus()的任何调用。使用自定义“对话框”方案或其他报告验证错误的方式,您的界面看起来会更好。

答案 2 :(得分:0)

尝试将它放在这样的闭包中。

e.focus(function() {
   alert("xxxx Number must be less than 15 characters long!");  
});