2016-12-19 14 views
0

サブミット時に正規表現を介して電子メールの非常に基本的なjQuery検証を行いたいと思います。私のHTML:サブミット時にRegex電子メールの検証

<form action="POST" id="form"> 
<input type="email" id="customer_email" placeholder="email here" /> 
<input type="submit" /> 
</form> 

JS:

$('#form').submit(function() { 
var email_reg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

var emailinput = $('#customer_email').value(); 

if (email_reg.test(emailinput) == false) { 
    window.alert('no good'); 
} 
}); 

私の理解するには、これが機能するために、私は電子メールの入力を介して入力の値を取得します(私はライン4上で行うもの)とを実行する必要がありますそれに正規表現。

送信がクリックされると、ウィンドウアラートではなくフォームに標準入力エラーが表示されます。ここではこれを概説Codepenを表示すること自由に感じなさい: http://codepen.io/anon/pen/oYmJLW?editors=1010

+0

この電子メールで正規表現をテストしました: "2039i#@gmail.com"とうまくいきました。あなたの警告メッセージ(「いいえ」)を警告しました。どのメールを試しましたか?たぶんあなたのケースのために正規表現を変更する必要があります。 –

+0

私は私の個人的なサイトでRegexを使用しています。問題は、私が 'type =" email "'を使っていて、JSの検証を無効にしていると思います。 – kawnah

答えて

2

あなたは、実際のフォームの送信を防ぐためにevent.preventDefault()を追加し、入力に.val()の代わり.value()を使用する必要があります。あなたがその使用type="text"を回避したい場合は、妥当性チェックを(あなたはそれを自分で行う必要はありません)を行いますtype="email"ブラウザとして、あなたの入力を宣言することで

$('#form').submit(function(event) { 
    event.preventDefault(); 
    var email_reg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

    var emailinput = $('#customer_email').val(); 

    if (email_reg.test(emailinput) == false) { 
     window.alert('no good'); 
    } 
}); 

+0

ありがとうございます。したがって、 'type =" email "'を使用すると、ブラウザは有効性チェックを行い、JSを上書きしますか?私はそれを知らなかった。 'e.preventDefault();'はそれが起こらないようにしますか? – kawnah

+0

@kawnah 'e.preventDefault()'は送信を妨げるだけです。正直言って、なぜJavascriptが完全にスキップされているのか、なぜそれがどうやって相互作用するのか分かりません。私が推測するような奇妙なブラウザの癖 – chrki

関連する問題