忍者ブログ

からすまる日誌

名前、パスワードを英数字しか受け付けないようにする

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

名前、パスワードを英数字しか受け付けないようにする

まだまだ試行の余地がありそうですが
とりあえず。

パスワードのinputからフォーカスが離れたときに文字数チェックするようにもしました
あれ、名前の方もこれでいいのでは??


$(function(){
 //英数字のみ
 
 $('#u_name').keyup(function(){
   var v = $(this).val();
   $(this).val(v.replace(/[^a-zA-Z0-9]/g,''));
 });
 $('#u_password').keyup(function(){//同じ
 console.log("in u_password funcion");
   var v = $(this).val();
   $(this).val(v.replace(/[^a-zA-Z0-9]/g,''));
  console.log(v.length);
 });
 
 //パスワードの文字数は適切かどうか
 $('#u_password').on('blur',function(){
  var str = $('#u_password').val();
  var strnum = (str.length);
  console.log(strnum);
  if (strnum<8 || strnum>32){
   console.log("bad pass");
   var elehoge="文字数エラーです";
   console.log(elehoge);
   $('#passhoge').text(elehoge).css('color','#f00');
   $('#u_password').val("");//なぜかここがtextだと動かずvalだとok。なぜだ。
   $('#u_password').focus();
  }else{
   $('#passhoge').text("okです");
  }
 });
 //名前の整合性チェック
 $('#name_check').on('click',function(){
  $('#name_checked').text("");//結果表示初期化
  //まず名前文字数がオーバーしているか
  var namestr =$('#u_name').val();
  var stringCount = namestr.length;
  if (stringCount>16){
   console.log("文字多すぎ");
   var elehoge = $('<p>').text("名前は16文字以内です").css('color','#f00');
   elehoge.attr('class','name_NG');
   $('#name_checked').append(elehoge);
   $('#u_name').val("");//ここはtextじゃなくてval
   $('#u_name').focus();
   $('#name_ok').val(0);//隠しinputにvalを与える
  }else{
   //ajax通信
   $.ajax({
    url:'api/get_name.php',
    type:'get',
    data:{'u_name':$('#u_name').val()},
    dataType:'text',
   })
   .done(function(d){
    $hoge =d;
    console.log($hoge);
    $('#name_checked').text("");
    if (d==0){//名前被りなし
     console.log("name ok");
     var elehoge = $('<p>').text("使用可能です").css('color','#99f');
     elehoge.attr('class','name_ok');
     $('#name_checked').append(elehoge);
     $('#name_ok').val(1);//隠しinputにvalを与える
    }else{//かぶった
     console.log("name NG");
     var elehoge = $('<p>').text("この名前は既に使われています").css('color','#f00');
     elehoge.attr('class','name_NG');
     $('#name_checked').append(elehoge);
     $('#u_name').val("");//ここはtextじゃなくてval
     $('#u_name').focus();
    }
   })
   .fail(function(){
    alert('NG');
   });//ajaxのおわり
  }//ifのおわり
 });//on clickのおわり
  /*
  $('#english_num_only').on('keydown',function(e){
   console.log("now in keydown");
   let k = e.keyCode;
    let str = String.fromCharCode(k);
   //以下に当てはまらねば弾く。数字と英文字、shift,矢印キー、backspace,delete,F1?,半角全角,ハイフン、テンキーの数字
    if(!(str.match(/[0-9a-zA-Z]/) || e.shiftKey || (37 <= k && k <= 40) || k == 8 || k == 46|| k == 112|| k == 244|| k == 189|| k >= 96 && k<=105)){
      return false;
    }
  });//onの終わり
  //全角禁止
  $('#english_num_only').on('keyup', function(e){
    if(e.keyCode == 9 || e.keyCode == 16) return;
    this.value = this.value.replace(/[^0-9a-zA-Z]+/i,'');
  });
  $('#english_num_only').on('blur',function(){
    this.value = this.value.replace(/[^0-9a-zA-Z]+/i,'');
  });
  */
});


試行錯誤のしかばねもコメントアウトして残すのが自分流です。 後で必要になるかもと思うと失敗した部分もなかなか消せない。
 
 

 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30