【JavaScript】メールフォームにフリーメール除外のチェックを入れたい

現在あるメールフォームに、フリーメール(とりあえず yahoo.co.jp、hotmail.comの二種類)では申し込みできない機能を入れたいです。
(文字数オーバーのため)コメント欄に現在のコードを記述しています。これに内容を足していただけませんでしょうか。


何卒よろしくお願いいたします。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2018/09/06 12:04:42
  • 終了:2018/09/06 15:18:26
id:cafe-beret

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>

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4766ベストアンサー獲得回数20472018/09/06 13:44:02

ポイント1000pt

追加分の近辺だけです。元の書き方に合わせました。
・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/

id:cafe-beret

こちらで動かすことができました!
いつも本当にありがとうございます。何卒よろしくお願いいたします。

2018/09/06 15:19:11

その他の回答(0件)

id:a-kuma3 No.1

a-kuma3回答回数4766ベストアンサー獲得回数20472018/09/06 13:44:02ここでベストアンサー

ポイント1000pt

追加分の近辺だけです。元の書き方に合わせました。
・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/

id:cafe-beret

こちらで動かすことができました!
いつも本当にありがとうございます。何卒よろしくお願いいたします。

2018/09/06 15:19:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません