JavaScriptで半角カナを判断するには?

[上に] [前に] [次に]
PTAN [E-Mail] 1998/06/04(木) 10:06:12
フォーム上のテキストボックスに半角カナが
入力された場合、JavaScriptで、エラーメッセ
ージを表示させるようにしたいのですが、可能
でしょうか?

まる高 [E-Mail] [HomePage] 1998/06/04(木) 14:12:52
これで試してみてください。半角カタカナを入力するとFALSE、それ以外はTRUEのアラートを表示する例です。
NN4とIE3はOKでした。
NN、IEでどの文字を入れて動作するはずです、多分。
ちょっと、長いんですがコードを読んでください。

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function JudgeLetter(){
var Answer ;
var String ;

String=document.test.InputArea.value ;
       // Explorerの時、

        if( navigator.appName == "Microsoft Internet Explorer" )
               Answer=Judge_IE( String ) ;
        // Netscapeの時、
        else   Answer=Judge_Netscape( String ) ;

alert("Result : "+Answer) ;
}

function Judge_IE( String ){
        var Count ;
        var Letter ;
        for( Count=0; Count < String.length; Count++ ){
                Letter = String.charAt( Count ) ;
                if( Letter.length==1 && JudgeKatakana(Letter)==true )
return false ;
        }
return true ;
}


function Judge_Netscape( String ){
        var Count ;
        var Letter ;
        var kl ;
        kl = Klength( String ) ;
        for( Count=0; Count < kl; Count++){
                Letter = KcharAt( String,Count );
if( Letter.length==1 &&JudgeKatakana(Letter)==true )
return false ;
        }
        return true ;
}

//文字列長取得
function Klength( String ){
var Count ;
var Length ;
var Letter, LetterBin ;

Length = 0 ;
for( Count=0; Count < String.length; Count++ ){
Letter = escape( String.charAt( Count ) ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;
if ((LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ) Count++ ;
Length++ ;
}
return Length ;
}

//指定1文字取得(Shift JIS)
function KcharAt( String,Position ){
var Length ;
var Count ;
var CutString ;
var Letter, LetterBin ;

for( Count=0; Count < String.length; Count++ ){
CutString = String.charAt( Count ) ;
Letter = escape( CutString ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;
if( (LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ){
CutString = CutString+String.charAt( Count+1 ) ;
Count++ ;
}
if( Position==Length ) break ;
Length++ ;
}
return CutString ;
}

function JudgeKatakana(Letter){
var CLetter;
var CLetterBin;
CLetter = escape(Letter) ;
CLetterBin = eval( "0x"+CLetter.charAt( 1 )+CLetter.charAt( 2 ) ) ;
        if( CLetterBin > 0xA0 && CLetterBin < 0xE0 )
return true ;
        else return false ;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="test">
<INPUT TYPE="text" NAME="InputArea">
<INPUT TYPE="button" VALUE="実行" onClick="JudgeLetter()">
</BODY>
</HTML>

まる高 [E-Mail] [HomePage] 1998/06/04(木) 14:16:47
上記の補足
漢字コードは、Shjft JISを対象としています。
IEとNNの漢字コードの解釈の違いを吸収しています。

PTAN [E-Mail] 1998/06/04(木) 18:15:43
[[解決]]
ばっちりです...(^^)
どうもありがとうございました...m(_ _)m

[上に] [前に] [次に]