2016-03-31 8 views
0

HTML5のtype="email"検証を使用して電子メールを検証する機能を作成したいと考えています。「隠しフォーム」を使用して電子メールを検証しますか?

可能であれば、フォームを作成し、入力を添付してtype="email"にして送信してみます。私はそれが働いたかどうかを確認することができますか、または渡された電子メールが実際に電子メールであるかどうかを返すことはできません。

このような何かが、私は、これは動作しません知っている:

function isEmail (string) { 
    var frm = document.createElement('form'); 
    var input = document.createElement('input'); 

    input.setAttribute('type', 'email'); 
    input.setAttribute('action', 'javascript:void(0)'); 
    input.setAttribute('value', string); 

    frm.appendChild(input); 

    // I know this doesn't work 
    if (!! frm.submit()) return true; 
    else return false; 
} 

それは、このように電子メールアドレスを検証することは可能ですか? https://www.w3.org/TR/html5/forms.html#e-mail-state-(type=email)として

+0

一般的な免責事項:電子メールアドレスの構文上の妥当性は、電子メールアドレスが実際に存在することを意味するものではありません。ですから、これを船外に出そうとしないでください。あなたがしなければならないのは、ユーザーからの入力ミスであり、実際の確認にはリンクやパスコードなどの電子メールが必要です。 –

+0

確かに、私は渡された電子メールが構文的に正しいことを確認しようとしています。 – Martin

+1

まあ、「構文上の正しさ」の点については、私が投稿した2番目のリンクの注記を参照してください:_ "この要件はRFC5322の故意に違反しています。 "@"文字の後ろにあまりにも漠然としていて、コメント、空白文字、引用符で囲まれた文字列を大部分のユーザによく知られていない方法で使用することはできません) 「有効な」電子メールアドレスを構成するものは、あなたが誰に依頼するかによって、すでに異なります。通常は、必要以上に厳しくチェックするのはお勧めできません。 – CBroe

答えて

1

ユーザーエージェントは、ユーザーが有効な電子メールアドレス

ない文字列に値を設定することを可能にするので、私はおそらくかなり依存しないだろう、と言いますその上に。

さらに、https://www.w3.org/TR/html5/forms.html#valid-e-mail-addressには、ブラウザが電子メール入力フィールドの検証時に想定していたものと同じチェックを実行する(JS互換の)正規表現があります。


しかし、あなたはこのためにフォームフィールドを使用して主張すべきである - HTML5はまた、フォームフィールドが有効であるかどうかを確認するためのAPIを提供しhttps://www.w3.org/TR/html5/forms.html#the-constraint-validation-apiを参照してください - ので、実際にフォームを送信する必要はありません。

私は入力の種類=電子メールのブラウザの互換性をチェックしていませんが、正規表現のソリューションではすべてのブラウザで動作するはずですが、HTML5を使用している場合は、 。

+0

私はこの答えが好きで、私はこの正規表現を私の製品で使用します。私はまだ私の大胆な質問について興味がありますが、私がしようとしていること*可能です*、推奨されていませんか? – Martin

+0

編集を参照 - HTML5はフォームフィールドの有効性を確認するAPIも指定します。 – CBroe

+0

ええ、ちょうどそれを見ました。私は正しいとマークすることができますので、数分待って – Martin

関連する問題