0

フォームがあり、ユーザーは 1 つの入力ボックスに電子メール アドレスを入力する必要があります。HTMLファイルの先頭にロードされている外部ファイルに格納されているjavascript関数があります。

無効な電子メール アドレスを入力すると、Safari (6.0.5) で問題が発生します。警告ウィンドウが表示され、[OK] をクリックすると、何度も表示されます。正しいメールアドレスを入力する機会がありません。

これは私の関数がどのように見えるかです:

   function validateEmail()
{
var x=document.forms["theForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Not a valid e-mail address");
  document.theForm.email.focus();
  return false;
  }
}

そして、以下に示すように、この関数を呼び出します。

<input type="text" name="email" onblur="validateEmail();" /></td >
4

2 に答える 2

1

使用する.removeFocus()と、もう問題はありません。

function validateEmail()
{
var x=document.forms["theForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  document.getElementById('alert_mail').innerHTML  = "Please change here";
  return false;
  }
    document.getElementById('alert_mail').innerHTML  = "";
}

編集:return false;この関数には効果がありません。投稿したコードはコード全体ではないと思います。とにかくreturn false;、フォームを送信するときに役立ち、検証に合格しない場合は送信を停止したくありません。

于 2013-06-26T22:03:15.247 に答える
0

onblur を使用したサファリにバグがあるのではないかと思います。onchange を試してみましたか?

于 2013-06-26T22:01:38.270 に答える