現在あるメールフォームに、フリーメール(とりあえず yahoo.co.jp、hotmail.comの二種類)では申し込みできない機能を入れたいです。
(文字数オーバーのため)コメント欄に現在のコードを記述しています。これに内容を足していただけませんでしょうか。
何卒よろしくお願いいたします。
追加分の近辺だけです。元の書き方に合わせました。
・javascript
function is_freemail(addr) { const re_freemail = /@(yahoo\.co\.jp|hotmail\.com)\s*$/; return re_freemail.test(addr); } if(is_freemail(mymailform.mailaddr.value)){ document.getElementById("mailaddralert-f").style.display="block"; mymailform.mailaddr.value=""; mymailform.mailaddr.focus(); x = true; } if(is_freemail(mymailform.mailaddr2.value)){ document.getElementById("mailaddralert2-f").style.display="block"; mymailform.mailaddr2.value=""; mymailform.mailaddr2.focus(); x = true; } if (x) { ...
・HTML
<p id="mailaddralert" class="errormsg">メールアドレスが未入力です。</p> <p id="mailaddralert-f" class="errormsg">フリーメールはご利用になれません</p> ... <p id="mailaddralert2" class="errormsg">メールアドレスが未入力です。</p> <p id="mailaddralert2-f" class="errormsg">フリーメールはご利用になれません</p>
const re_freemail = /@(yahoo\.co\.jp|hotmail\.com)\s*$/;
この部分が、フリーメールの判定です。
() の間に、フリーメールのものと思われるドメインを "|" で区切って並べます。
ピリオドは特別な意味を持つので、"\" でエスケープします。
雑ですけど、jsFiddle でも動かしてみました。
http://jsfiddle.net/7kcsov2x/
JavaScript
function check() { document.getElementById("namealert").style.display="none"; document.getElementById("name2alert").style.display="none"; document.getElementById("mailaddralert").style.display="none"; document.getElementById("mailaddralert2").style.display="none"; document.getElementById("telalert").style.display="none"; x=new Boolean(false); x = false; if(mymailform.tel.value == "") { document.getElementById("telalert").style.display="block"; mymailform.tel.focus(); x = true; } if(mymailform.mailaddr2.value == "") { document.getElementById("mailaddralert2").style.display="block"; mymailform.mailaddr2.focus(); x = true; } if(mymailform.mailaddr.value == "") { document.getElementById("mailaddralert").style.display="block"; mymailform.mailaddr.focus(); x = true; }else{ var xx = mymailform.mailaddr.value; var atpos = xx.indexOf("@"); var dotpos = xx.lastIndexOf("."); if (atpos<1 || dotpos<atpos+2 || dotpos+2>=xx.length) { document.getElementById("mailaddralert").style.display="block"; mymailform.mailaddr.focus(); x = true; } } if(mymailform.name2.value == "") { document.getElementById("name2alert").style.display="block"; mymailform.name2.focus(); x = true; } if(mymailform.name.value == "") { document.getElementById("namealert").style.display="block"; mymailform.name.focus(); x = true; } if(mymailform.mailaddr.value != ""){ if( mymailform.mailaddr2.value != "") { if(mymailform.mailaddr.value != mymailform.mailaddr2.value){ document.getElementById("mailaddralert2").style.display="block"; mymailform.mailaddr2.value=""; mymailform.mailaddr2.focus(); x = true; } } } if (x) { return false; }else return true; }
HTML
<tr><th>メールアドレス <span class="red">※</span></th><td> <input type="text" name="メールアドレス" id="mailaddr" value="" /> <p id="mailaddralert" class="errormsg">メールアドレスが未入力です。</p> ※ここに「フリーメールはご利用になれません」と表示したい </td></tr> <tr><th>メールアドレス確認</th><td> <p class="kakuning">確認のためにもう一度</p> <input type="text" name="メールアドレス(確認)" id="mailaddr2" value="" /> <p id="mailaddralert2" class="errormsg">メールアドレスが未入力です。</p> ※ここに「フリーメールはご利用になれません」と表示したい </td></tr>