Javascript 田元';出错后不能对焦

Javascript 田元';出错后不能对焦,javascript,html,Javascript,Html,可能会是我再也找不到的明显的东西。但任何帮助,一如既往,都是非常感谢的 我的javascript错误消息和焦点设置可以与提交时的所有验证函数一起正常工作,但我无法使字段与onblur验证一起获得焦点。错误消息正确显示,但焦点将转到表单中的下一个字段 下面是我首先针对相关字段的代码: function validatexxxx() { var e = document.getElementById('xxxxNumber'); //check to see if the xxxx number i

可能会是我再也找不到的明显的东西。但任何帮助,一如既往,都是非常感谢的

我的javascript错误消息和焦点设置可以与提交时的所有验证函数一起正常工作,但我无法使字段与onblur验证一起获得焦点。错误消息正确显示,但焦点将转到表单中的下一个字段

下面是我首先针对相关字段的代码:

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;

}
函数validatexxx()
{
var e=document.getElementById('xxNumber');
//检查xxxx号码是否已在使用中。
对于(i=0;i=15){
警报(“xxxx编号长度必须小于15个字符!”);
e、 焦点();
返回false;
}
返回true;
}
以及输入的html:

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

试图从“模糊”处理程序强制聚焦本身就是有问题的。尝试以下操作:将对
.focus()
的调用包装到超时处理程序中。这将使“模糊”事件在尝试设置焦点之前完成:

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

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

试图从“模糊”处理程序强制聚焦本身就是有问题的。尝试以下操作:将对
.focus()
的调用包装到超时处理程序中。这将使“模糊”事件在尝试设置焦点之前完成:

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

另外,
alert()
也可能有问题,尤其是在Safari中。该浏览器(或者说,在过去;我最近没有尝试过)倾向于想象“警报”窗口的出现意味着主浏览器窗口失去了焦点。之后,Safari将完全忽略对
.focus()
的任何调用。使用自定义“对话框”方案或其他报告验证错误的方法,您的界面会更美观。

警报()
导致焦点消失。显示弹出窗口后,您将设置焦点。但是,当用户需要在弹出窗口中单击“确定”时,焦点会丢失。

警报()
导致焦点消失。显示弹出窗口后,您将设置焦点。但是,当用户需要在弹出窗口中单击“确定”时,焦点将丢失。

尝试将其关闭,如下图所示

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

试着像这样把它封闭起来

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

我至少有7%确定
alert()
confirm()
正在阻止调用。@Cobra\u它们确实很快,但浏览器用于这些例程的那些低级窗口确实会让事情变得混乱。而且,它们很难看。我至少有7%确定
alert()
confirm()
正在阻止调用。@Cobra\u它们确实很快,但浏览器用于这些例程的那些低级窗口确实会混淆事情。而且,它们很丑。谢谢你,尖尖的。。这在当时是有效的,但我想我会尝试更进一步,在那里获得一些自定义对话框。我在过去已经实现了它们。这是我大学毕业后的第一次网络开发工作,他们真的把这个小项目的发布日期提前了。所以我只是想让它正常工作。我当然想以正确的方式学习这些东西。不过,如果你有任何其他提示或提示,请告诉我。谢谢你的提示。。这在当时是有效的,但我想我会尝试更进一步,在那里获得一些自定义对话框。我在过去已经实现了它们。这是我大学毕业后的第一次网络开发工作,他们真的把这个小项目的发布日期提前了。因此,我只是想让它正常工作。我当然想以正确的方式学习这些东西,尽管如此,如果您有任何其他提示或提示,请告诉我。
.focus()
方法不带任何参数。是的,但在本例中,“e”是一个原始DOM元素,而不是jQuery对象。另外,调用jQuery
.focus()
方法将建立事件处理程序,但它不会强制更改焦点,而这正是OP想要做的。
.focus()
方法不接受任何参数。是的,但在本例中,“e”是原始DOM元素,而不是jQuery对象。另外,调用jQuery
.focus()
方法将建立事件处理程序,但不会强制更改焦点,这正是OP想要做的。