1

おそらく、私が再び見つけることができない、本当に明白なものになるでしょう。しかし、いつものように、どんな助けも大歓迎です。

私の 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>
4

3 に答える 3

3

それalert()が焦点を遠ざける原因です。ポップアップが表示されたら、フォーカスを設定しています。OKしかし、ユーザーは表示されたポップアップ ウィンドウをクリックする必要があるため、フォーカスが失われます。

于 2013-08-21T15:09:03.667 に答える
2

「ぼかし」ハンドラーからフォーカスを強制しようとすることは、本質的に問題があります。.focus()これを試してください: 呼び出しをタイムアウト ハンドラにラップします。これにより、フォーカスを設定する前に「ぼかし」イベントが完了します。

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

また、alert()特にSafariでは問題になる可能性があります. そのブラウザには、「アラート」ウィンドウが表示された場合、メインのブラウザ ウィンドウがフォーカスを失ったことを意味すると考える傾向があります (以前はありましたが、最近は試していません)。その後、Safari は への呼び出しを完全に無視します.focus()。カスタムの「ダイアログ」スキーム、または検証エラーを報告するその他の方法を使用すると、インターフェイスが見栄えが良くなります。

于 2013-08-21T15:08:06.757 に答える
0

このようなクロージャーに入れてみてください。

e.focus(function() {
   alert("xxxx Number must be less than 15 characters long!");  
});
于 2013-08-21T15:14:56.483 に答える