0

JavaScript を使用した電子メール アドレスの検証に関して、他にも質問があります。フォームの検証に関する質問もあります。ただし、コードを機能させることができず、この特定の問題をカバーする質問が見つかりません。

編集

ライブWebサイトでは、サーバー側の検証が不可欠であることを完全に理解しています. また、確認メールを送信する価値も理解しています。(私は実際にこれらすべての機能を備えたサイトを持っています)。PHPでスパムチェックをコーディングする方法を知っています。

この例では、電子メールの入力フィールドを検証するよう求められました。私は厳密に xhtml 1.0 に準拠する必要があるため、「email」タイプは使用できません。また、この割り当てにサーバー側スクリプトを使用することは許可されていません。電子メールの確認を整理できません。javascript で完全にチェックする必要があります。

これで私の質問が明確になることを願っています

2 つのことについてフォームを検証しようとしています。

すべてのフィールドにデータがあることを確認します。有効な電子メール アドレスが入力されているかどうかを確認します。

フォーム フィールドのデータを検証することはできますが、メール チェックを組み込むのは面倒です。

以前はアラートを出していましたが、間違って、今はまったく呼び出されていません (または、少なくともそのように動作しています)。

これが機能するようになったら、メールアドレスが一致するかどうかを確認することに集中する必要があります。ただし、これはこの質問の外の問題です。

でこれを検証することだけに集中していjavascriptます。この特定のインスタンスでは、サーバー側については心配していません (この質問以外の別の問題)。ありがとう。

function Validate()
        {
            var inputs = [document.getElementById('fname'),_
 document.getElementById('lname'), document.getElementById('email1'),_
 document.getElementById('email2')];

            for(var i = 0; i<inputs.length; i++)
            {
                if(inputs[i].value == '')
                {
                   alert('Please complete all required fields.');
                    return false;
                    }

                    else if ((id =='email1' || 'email2') &&_
(inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
                        alert('Please enter a valid email address.');
                        return false;
                    }
            }
         }


<form onsubmit="return Validate()"  action="" method="post"  id="contactForm" >
 <input  type="text"  name="fname" id="fname"  />

 <input  type="text"  name="lname" id="lname" />

 <input   type="text"  name="email1"  id="email1" />

 <input   type="text"  name="email2"  id="email2"/>

 <input type="submit" value="submit" name="submit"  />
</form>

サイドノート - 折り返すテキストをフォーマットするには、問題ありませんか (質問を投稿する目的で、読みやすくするために新しい行を追加してアンダースコアを作成し、作成しますか?実際のテキストにはこれがありません!投稿用にコードをフォーマットする簡単な方法があります。

編集 2

これをコメントアウトすると機能します:

/*else if ((id =='email1' || id=='email2') && (inputs[i].value!= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ )){
    alert('Please enter a valid email address.');
        return false;
}*/

したがって、これはトラブルシューティングに役立ちます。

4

4 に答える 4

3

すでに構文エラーが表示されています:

else if ((id =='email1' || 'email2') 

する必要があります

else if ((id =='email1' || id=='email2') 

見えるところから。

また、任意のフィールドにスペースを入力してもテストが通過することに注意してください。空のフィールドをテストするときは、フィールド値をトリミングする必要があります。

最後に、電子メールの検証に関して、これは正規表現の使用方法ではありません。JavaScript+正規表現で電子メールを検証する方法のデモについては、この投稿をお読みください。

于 2013-06-26T14:45:53.003 に答える
3
 var a=document.getElementById('fname');
 var b=document.getElementById('lname');
 var c=document.getElementById('email1');
 var d=document.getElementById('email12')

if(a==""||b==""||c==""||d=="")
 {
 alert('Please complete all required fields.');
 return false;
 }
于 2013-06-26T14:44:37.813 に答える
3

電子メール アドレスを検証する最善の方法は、そのアドレスに電子メールを送信することです。正規表現は、電子メール アドレスの検証には機能しません。john.doe@email.com などの通常のメール アドレスを検証できる場合がありますが、正規表現を使用すると拒否される有効なメール アドレスが他にもあります。

メールアドレスの正規表現認識を確認するのは難しいですか? AND:正規表現を使用して電子メール アドレスを検証する

于 2013-06-26T14:48:25.757 に答える