次の連絡フォーム検証スクリプトを作成しました。メールフィールドを検証するにはどうすればよいですか?
<style type="text/css">
div.contactForm { width:370px; margin:0 auto; }
form.contactUs label { display:block; }
form.contactUs input { margin-bottom:10px; }
input.submit { margin-top:10px; }
input.error { background:#FF9B9B; border:1px solid red; }
div.errorMessage { color:#f00; padding:0 0 20px; }
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.errorMessage').hide();
$('.submit').click(function() {
var name = $('input.name').val();
var email = $('input.email').val();
var phone = $('input.phone').val();
if (name == '') {
$('input.name').addClass('error');
$('input.name').keypress(function(){
$('input.name').removeClass('error');
});
}
if (email == '') {
$('input.email').addClass('error');
$('input.email').keypress(function(){
$('input.email').removeClass('error');
});
}
if (phone == '') {
$('input.phone').addClass('error');
$('input.phone').keypress(function(){
$('input.phone').removeClass('error');
});
}
if (name == '' || email == '' || phone == '') {
$('.errorMessage').fadeIn('medium');
return false;
}
});
});
</script>
<div class="contactForm">
<h2>Contact Us</h2>
<div class="errorMessage">Please enter all required fields.</div>
<form action="http://google.com" method="post" class="contactUs">
<label>Name <em>(required)</em></label>
<input type="text" name="name" class="name" size="30" />
<label>Email <em>(valid email required)</em></label>
<input type="text" name="email" class="email" size="30" />
<label>Phone <em>(required)</em></label>
<input type="text" name="phone" class="phone" size="30" />
<label>Message</label>
<textarea name="message" cols="40" rows="10"></textarea>
<br />
<input type="submit" name="submit" value="Submit" class="submit" />
</form>
</div><!--contactForm-->
検証とは、入力された値に適切な場所に「@」と「。」が含まれている必要があることを意味します。
また、追加のプラグインは使用したくありません。
プラグインを使用したくない場合は、RegExを使用できます。
var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
if (testEmail.test(valueToTest))
// Do whatever if it passes.
else
// Do whatever if it fails.
これにより、ほとんどのメールが届きます。 RegExで電子メールを検証することについての興味深い読み物
ここでスクリプトをテストできます: http://jsfiddle.net/EFfCa/
プラグインを本当に使用したくない場合は、この方法が非常に優れていることがわかりました。
function validateEmail(email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if( !emailReg.test( email ) ) {
return false;
} else {
return true;
}
}
http://thejimgaudet.com/articles/support/web/jquery-e-mail-validation-without-a-plugin/
input.email
ブロックを次のように変更します。
if (email == '') {
$('input.email').addClass('error');
$('input.email').keypress(function(){
$('input.email').removeClass('error');
});
$('input.email').focusout(function(){
$('input.email').filter(function(){
return this.value.match(/your email regex/);
}).addClass('error');
});
}
説明:フォーカスアウトアクションをinput.email
フォーム要素に追加し、RFC822標準を使用して電子メール文字列を検証します。合格できない場合は、「error」クラスを追加します。
私はこれをブラウザでテストしていませんが、jQuery> 1.4で動作するはずです。
編集:正規表現を削除しました。お気に入りの正規表現をそこに配置します。
私は現在、フォームの検証に ketchup を使用しています。 bassassistのプラグイン もあります。プラグインを確認してください。正規表現を書く時間を節約できます。