ダブルパー 【My Script】 javascript_3

◆【MyScript】のサンプルメニューにリンク ◆【MyScript】の記事を全てみる ◆この記事のホーム[dblpar.com]にリンク
前のページを表示
【MENU】
■【My Script】データベースに登録されたカテゴリ[javascript]での記事[45]ケの内、[41]番目から[5]ケを表示)

□(41) 文字列に含まれるhtml特殊文字をチェックして警告・代替・削除する
□(42) 文字列に指定文字が含まれているかどうかチェックする(charAt/indexOf)
□(43) 文字列の前後の半角空白を削除する(vbscriptのtrim()の代替え関数)
□(44) 文字列の半角空白を有効にするため、半角空白を代替えする
□(45) 変数の型を調べる(typeof)



[javascript] (41)

 文字列に含まれるhtml特殊文字をチェックして警告・代替・削除する

【文字列に含まれるhtml特殊文字をチェックして警告・代替・削除する】

◆データベースの入力フォームにおいて、サーバー側でも文字エスケープの処理を行うが、入力時点でjavascript によりhtml特殊文字をチェックする。
 [html特殊文字]:<>&”(←は全角で記述しているが実際は半角文字)

◆javascript Tips
  f=0:警告のみ
  f=1:対象文字を別の文字に置き換え(<→[,>→],&→*,"→#)
  f=2:対象文字を強制的に削除

function fnHtmlspecialchars2(strR,f){
//strR:検査する文字列
  var strR2="";
  var strAction=0;
  var g;
  var strCom;
  
  var InputVal='<>&,"'; //html特殊文字リスト   
  for(i=0;i<strR.length;i++){
      g=strR.charAt(i);

      if (InputVal.indexOf(g,0)>=0){
          strAction=1;

          if(f==0){
              strR2=strR2 + g;   //何もしない
          }else if(f==1){
              switch(g){
                  case '<':
                      strR2=strR2 + g.replace(g,'['); 
                      break;
                  case '>':
                      strR2=strR2 + g.replace(g,']');
                      break;
                  case '&':
                      strR2=strR2 + g.replace(g,'*');
                      break;
                  case '"':
                      strR2=strR2 + g.replace(g,'#');
                      break;
                  default:
                      strR2=strR2 + g.replace(g,'?');
                      break;
              }
          }else{
              strR2=strR2 + g.replace(g,"");  //対象文字削除
          }    
      }else{
          strR2=strR2 + g;
      }
  
  if(strAction==1){
      if(f==0){
          alert(' html特殊文字( < > & " \\ \')等が入力されていますが、操作は継続できます。');
      }else{
          if(f==1){        
               strCom='html特殊文字を入力することはできません。自動的にこれらの文字を (<→[)(>→])(&→*)("→#) に置き換えます。操作中止する場合は[キャンセル]を選択して下さい。';
           }else if(f==2){
                strCom= 'html特殊文字を入力することはできません。自動的にこれらの文字を削除します。操作中止する場合は[キャンセル]を選択して下さい。';
           }

           if(!confirm(strCom)){
              return strR;
  }else{
              return strR2;
           }
      }
  }else{
      return strR; //特殊文字がない
  }
}
(DataID:000012)
[javascript] (42)

 文字列に指定文字が含まれているかどうかチェックする(charAt/indexOf)

【文字列に指定した文字が含まれているなら警告する】

◆javascript tips
//strR:文字列
function fnWordCheck(strR){
  var InputVal="ABCDE";  //許容されない文字
    var g;
    for(i=0;i<strR.value.length;i++){
        g=strR.value.charAt(i);
        //InputValリストの文字が使用されていればエラー警告
        if(InputVal.indexOf(g,0)>=0){
           alert("  使用できない文字が入力されました。");
           return false;
        }
    }
}

◆許容されない文字が入力されたとき、代替文字に置き換えるか、強制的に削除するか等が選択できるようにすると使い勝手がよい。
(DataID:000008)
[javascript] (43)

 文字列の前後の半角空白を削除する(vbscriptのtrim()の代替え関数)

【文字列の前後の半角空白を削除する】

◆データベースを活用しているとどうしてもvbscriptのtrim()関数が欲しくなります。javascriptで同様の機能を実行できます。

◆javascript Tips
//strR:文字列(入力) strR2:文字列(出力)
function fnTrim(strR){
   var i=0; 
   var strR2;    
   while(i<strR.length){
        if(strR.substring(strR.length-1,strR.length)==" "){
            strR2=strR.substring(0, strR.length-(i+1));
        }else{
            break;
        }
        i++;
    }

    return strR2;  //strR2を戻り値として返す
}
(DataID:000006)
[javascript] (44)

 文字列の半角空白を有効にするため、半角空白を代替えする

【文字列の半角空白を有効にするため、半角空白を&nbsp; に代替えする】

◆ブラウザによっても異なるようですが、データベースやファイルを読み込んだとき、行頭にある半角空白が無視されて表示されることがあります。文字をインデントしたいのにこれでは具合が悪い。読み込んだとき文字列の半角空白を  &nbsp;(html代替文字・全角で記述・実際は半角文字)に代替えすると、半角空白が有効になります。
  
(データベース・ファイルのデータ)
     あいうえお(半角空白4文字が行頭に付加されている)

(何も処理しないと)
あいうえお(半角空白4文字が行頭に付加されている)

(この記事に記載された方法で処理すると)
     あいうえお(半角空白4文字が行頭に付加されている)

◆javascript Tips
//strR:文字列(入力) strR2:文字列(出力)

function fnStrChange_xx(strR){
  var strR2="";
  strAction=0;
  
  for(i=0;i<strR.length;i++){
      g=strR.charAt(i);
          if(g==" "){
              strAction=1;
              strR2=strR2 + g.replace(g,"&nbsp;");
         // &nbsp;は全角文字で記述→半角に変える
          }else{
     strR2=strR2 + g;
 }   
  }   
  
  if(strAction==1){
      return strR2;
  }else{
      return strR;
  }
}

◆メモ
※インデント(字下げ)するのに全角空白を使う---この方法を多用してきたのだが---と、一部のブラウザでは表示が乱れる原因となるらしい。
※この記事に記載した機能を得るためにHTMLに<pre>〜〜</pre>を用いてみたが、枠内で自動的に改行されない(枠外にまで表示される)等の問題が生じた(IE7.0)ので、採用しなかったという経緯あり。
(DataID:000013)
[javascript] (45)

 変数の型を調べる(typeof)

【変数の型を調べる()javascript】

◆tips
[javascript]
strR2:戻り値
strR:入力値

strR2=typeof(strR);

[型]
  strR2="string":文字列
  strR2="number":数値
  strR2="object":オブジェクト
(DataID:000080)
Copyright(C) 2007-  ダブルパー本舗 All Rights Reserved.
Access counter:
Script【text_win2】ver.1.01