• 締切済み

フォームで半角文字の入力のみ許可する方法について

Javascriptの初心者です。フォームのtext入力で半角文字だけを入力できるようにしたいのですが、webから入手したサンプルソースで理解できない部分があります。以下のソース(抜粋)で、"%nFF"と"0xFF60"とは何を示しているのでしょうか。尚、変数doreに入っているのはescape()された値です。 if(dore.indexOf("%uFF") != -1 && '0x' + dore.substring(2 , dore.length) < 0xFF60)kekka++; else if(data[i].match(/\W/g) != null && dore.length == 6)kekka++;

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ユニコードの0xFF00~0xFF5F(全角英文字+記号)に該当するかってところみたいですが、 例えば、以下みたいなかんじでどうですか? もうちょっと絞った方がいいですが・ <script type="text/javascript"> <!-- function hanCheck(txt){ var str=txt.value; for(i=0;i<str.length;i++){ if(str.charCodeAt(i)>255){ alert("半角でない文字が含まれる"); } } } //--> </script> <form name="FORM1"> <input name="TEXT" type="text" value="" size="20" onchange="return hanCheck(this)"> </form>

zekkocho
質問者

補足

ご回答ありがとうございます。indexOf("%uFF") のところで、「%uFF」が何を示しているのかが分かりません。ネットで検索しているのですが手がかりがつかめません。日本語文字列をescape()でLitin1コードに変換すると、最初にくるコードのようなのですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • (Swing)JTextFieldを半角のみ入力可能にする方法

    JTextField で半角のみ入力可能なチェックを行いたいのですがどうもうまくいきません。 下記のソースは、入力桁数制限チェックと、全角チェックを行っているのですが 半角を入力した後に全角を入力すると、JTextFieldの値が消えてしまいます。 どなたがご指導よろしくお願いします。 もしくは、下記ソースの他によいチェック方法等ありましたら、教えてくださいm(__)m よろしくお願いいたします。 ======================================= userText.setDocument( new LimitedDocument( 8) ); /** * 指定文字数・全角チェック */ private class LimitedDocument extends PlainDocument { int limit; LimitedDocument( int limit ){ this.limit = limit; } public void insertString( int offset, String str, AttributeSet a ) { try{ String wholeText = getText( 0, getLength() ); // 文字数チェック byte[] b = wholeText.getBytes(); if( b.length >= limit ){ return; } char c = str.charAt(0); // 文字が半角だったら挿入する。 if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) { super.insertString(offset, String.valueOf(c), a); } else { } } catch( BadLocationException e ) { System.out.println( e ); } } } =======================================

    • ベストアンサー
    • Java
  • 全角の英数字と記号を半角に変換する方法について

    フォームに電話番号や郵便番号を入力する時に、 強制的に「"ime-mode: disabled;"」で半角入力するようにし、 カスタム関数「 chkCode(id)」を使いメモ帳などからコピー&貼付けをした時に、 全角の英数字が自動で半角の英数字に変換されるにしました。 いろいろと調べてみたのですが、記号を全角から半角に変換する方法が分かりません。 ゴールまであともう少しのところまでなのですが、 アドバイスを頂ければ幸いです。 よろしお願いいたします。 【スクリプト】 <!--半角変換ー--> function chkCode(id) { work=''; for (lp=0;lp<id.value.length;lp++) { unicode=id.value.charCodeAt(lp); if ((0xff0f<unicode) && (unicode<0xff1a)) { work+=String.fromCharCode(unicode-0xfee0); } else if ((0xff20<unicode) && (unicode<0xff3b)) { work+=String.fromCharCode(unicode-0xfee0); } else if ((0xff40<unicode) && (unicode<0xff5b)) { work+=String.fromCharCode(unicode-0xfee0); } else { work+=String.fromCharCode(unicode); } } id.value=work; } 【フォーム】 <input type="text" name="text01" value="連絡先" size="60" style="width:300px;" "ime-mode: disabled;" onkeyup="chkCode(this);" onfocus="if (this.value == defaultValue) this.value = '';" onblur="if (!this.value) this.value = defaultValue;">

  • フォームの入力チェック

    いつも参考にさせて頂いています。 Perl初心者です。 フォームの入力チェックを作成したいと思っています。 チェック項目 ・会社名    → 空入力でないか、全角入力であるか ・住所     → 会社名のチェックと同様 ・電話番号   → 空入力でないか、半角であるか 処理 上の条件を満たさなかった場合は 「全角で入力してください。」や 「電話番号は半角数字で入力してください」 などといった コメントを付けたページを表示させる。 満たした場合は 「登録しました。」 というようなページを表示。 そこで、入力チェックの条件文を書いたのですが 空入力された場合の条件式がわかりません。 どなたか教えて下さる方がいらっしゃいましたら 宜しくお願いします。 また、入力チェック後のページ切り替えはどのように 行っているのでしょうか? 宜しくお願いします。 #-----社名チェック----- if ($name =~ /[\xA1-\xFE][\xA1-\xFE]/) { $namecheck = ""; } else { $namecheck = "全角入力をして下さい。"; } #-----住所チェック----- if ($adr =~ /[\xA1-\xFE][\xA1-\xFE]/) { $adrcheck = ""; } else { $adrcheck = "全角入力をして下さい。"; } #-----電話番号チェック----- if($tel =~ /^[0-9]+$/) { $telcheck = ""; } else { $telcheck = "電話番号は半角数字で入力してください。"; } ※会社名、住所の全角チェックはjcodeでEUC-JPに変換しています。

  • 半角カタカナの入力チェックを作りたいです

    入力フォームで入力された文字に対して半角カタカナかチェックをしたいです。 function CheckHalfSizeKatakana($str) {  if (mb_ereg("^[ア-ン゛゜]+$",$str)) {    return true;  } else {    return false;  } } としたのですがうまくいきません。 PHP4です。

    • ベストアンサー
    • PHP
  • 入力された文字列の制限

    こんにちわ、初心者プログラマーのRammyと申します。 現在webで使うツールを開発中なのですが、web上にある入力フォーム内に 入力された文字列について、 1.半角英数字及び_-.のみ入力可能にする(メールアドレス判断用) 2.半角数字のみ入力可能にする(電話番号などの判断用) 3.文字列の長さをチェックし、一定の長さを超えたら送信させない 以上の入力制限処理をJAVAで行いたいのです。 現在、空白チェックのみ、チェック用のBeansを作成し、その中に public static boolean checkBlank(){  if (kind == null || user_name == null  || mail1 == null || mail2 == null  || tel == null || subject == null || text == null ) {  return false; }  if (kind .compareTo("") == 0 || user_name.compareTo("") == 0  || mail1.compareTo("") == 0 || mail2.compareTo("") == 0  || tel.compareTo("") == 0 || subject.compareTo("") == 0  || text.compareTo("") == 0 ) {  return false; } return true; } このように記述してありますが、Beans内に上記の1~3の機能をつけたし たいのです。が、いったいどのように記述したらいいのかわかりません。 1・2に関しては、入力可能な文字をあらかじめ決めておいて、入力された 文字列を分解し、入力可能文字と一致するかどうか判断する、というイメージ はできるのですが、どう書いたらいいものかわからないのです汗 3は、lengthメソッドをやはり使うのでしょうがどう書けばいいのか・・・汗 本当に初心者な質問で申し訳ないのですがご教授下さいませんでしょうか。 ヒントでもかまいませんのでご回答いただければ幸いです、宜しくおねがい 致します。

  • (java)HTMLをParseさせず・・・

    初めてお世話になります。 現在、HTMLをParse(解析)せずに、 BufferedReder→indexOf(抜き取りたい「文字」の出現場所を検索)→ substring(indexOfの内容を元に「文字」を抜き取る) という内容のシステムをjavaで組みたい!と試行錯誤しております;; 目的はParseと上記内容での実行時間がどれくらい違うのかという興味で作成を開始しました。 今回、BufferedReader→indeOfまでは考え通り上手くいったのですが、 substiringで1000文字以上あるHTMLソースから指定した箇所(indexOf)で抜き取る作業ができないので教えてください。(正確には○○.substring(int,int)の○○部分をどこにしていしたらいいのかわかりません。) 是非ご教授の程よろしくお願いします。 実際のコードは下記の通りです。 import java.io.*; import java.net.URL; public class Test { public static void main (String []args){ add(); } public static void add(){ try { //URLを指定して読み込み URL u = new URL("http://'"URLを入力"'/"); InputStream is = u.openStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is,"EUC_JP")); String line ; int linenum=1; int length=1; //1行ずつ読み込み while ((line = br.readLine()) != null) { String A = "166"; String B = "102"; int i; int j; //文字列検索(HTMLソースの0~何文字目に出現!?) i = line.indexOf(A); j = line.indexOf(B); if(i>=0){ System.out.println((i+length) + "文字目"); } if(j>=0){ System.out.println((j+length) + "文字目"); } linenum++; length += line.length() + 1; String str1 = line; String str2 = str1.substring(i+length,j+length);                             //当然「line」なんかにsubstringかけても駄目でしたw System.out.println(str2) ; } is.close(); br.close(); } catch (FileNotFoundException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } 説明が意味不明な点もあるかと思いますので、 質問もお待ちしております。 是非、お力をお貸ししてください。 よろしくお願いいたします。

  • テキストフィールドでの全角チェックについて

    テキストフィールド内にて、全角文字以外が入力されたらエラーをだすようにしています。そのとき以下のソースだと改行した時に、enterが半角とみなされてしまう現象が起こってしまいました。 function jstrlen(str) { len = 0; for (i = 0; i < str.length; i++) { wrk = escape(str.substr(i,1)); if ((wrk.substr(0,2) == "%u") && (wrk < "%uFF71")) { len++; } len++; } return len; } function isZen(str) { len1 = jstrlen(str.value); len2 = str.value.length * 2; if(len1 != len2){ alert("半角文字が混在"); str.focus() ; }else{ alert("全角文字のみ"); } } 対処方法をどなたかよろしくお願いします。

  • 文字入力チェック

    お世話になります、JAVA言語について勉強中の佐藤と申します。 今回は文字列のチェックを行いたいと思い、ロジックを組んでみました。 String sEnzanshi; if(args.length==3){ }else{ System.out.println("入力パラメータがおかしいですよ"); return; } sEnzanshi= args[2]; System.out.print(sEnzanshi); //第3パラメータチェック if(sEnzanshi == "add"){ }else if(sEnzanshi == "min"){ }else if(sEnzanshi == "mul"){ }else if(sEnzanshi == "div"){ }else{ System.out.println("第3パラメータが不正です"); return; } args[2]の内容が"add"、"min"、"mul"、"div"であれば次処理へ、それ以外はエラーとするようなロジックを組んだつもりです。 ですが、結果は"add"と入力してもエラーで返ってきてしまいます。 文字列チェックの前にSystem.out.printでargs[2]の内容が正しいか確認しましたが、addと正しく出力されました。 原因が分かる方はいらっしゃいますでしょうか? 宜しくお願い致します。

  • 教えてください。

    class test { public static void main(String args[]) { int A,B,C,D; String N,n; A = Integer.parseInt(args[0]); if(!(args.length == 0)) { if(args[0].length() <= 2 || args[0].length() >= 10) { System.out.println("入力された文字列のバイト数は" + args[0].getBytes().length + "です"); } else if(args[0].length() >= 5 || args[0].length() <= 7 ) { D = args[0].getBytes().length; D = D - 1; System.out.print("入力された文字列の長さは" + ( D ) + "です"); } else if(args[0].indexOf("N") >= 0 || args[0].indexOf("n") >= 0) { System.out.println("引数には'N' または 'n' が含まれていません"); } else if(args[0].indexOf("N") >= 0 || args[0].indexOf("n") >= 0) { System.out.println("引数には'N' または 'n' が含まれています"); } } } } プログラムの仕様は、 プログラムに引数を1つ指定して実行した時、 入力された文字列の長さが、 2 以下、又は 10 以上である場合、 入力された文字列のバイト数を表示 5 以上、かつ、7以下である場合、 入力された文字列の[長さ-1]の値を表示 その他の場合、 入力された文字列の中に、 半角英数字の 'N' または 'n' が含まれている場合は、 引数には'N' または 'n' が含まれています それ以外の場合は 引数には'N' または 'n' は含まれていませんと表示 このようにさせたいんです。 実行例は、 ・D:\Work>java test z 入力された文字列のバイト数は 1 です ・D:\Work>java test dertftd 入力された文字列の長さは 6 です ・D:\Work>java test asd 引数には'N' または 'n' は含まれていません ・D:\Work>java JavaSample7 nfc 引数には'N' または 'n' が含まれています と、実行させたいんですが、Nやnを入力して実行するとエラーが出てしまうんです・・・ 長くなって申し訳ないんですが、どなたかご教授いただけないでしょうか?

    • ベストアンサー
    • Java
  • HPの

    画像(壁紙)を、http?にするにはどうしたらいいんですか?? あと、訪問回数を表示したいんですけど やっても構文エラー?? っていうのになります。 ちなみに、訪問回数のやつは↓です <SCRIPT language="JavaScript"> acTimes=getCookie("AC"); if (acTimes=="") { acTimes=1; } document.write(acTimes+"回目のアクセスサンキュー!!"); acTimes++; setCookie("AC",acTimes); function getCookie(key){ tmp=document.cookie+";"; tmp1=tmp.indexOf(key, 0); if(tmp1!=-1){ tmp=tmp.substring(tmp1,tmp.length); start=tmp.indexOf("=",0)+1; end=tmp.indexOf(";",start); return(unescape(tmp.substring(start,end))); } return(""); } function setCookie(key,val) { tmp=key+"="+escape(val)+";"; tmp+="expires=Fri, 31-Dec-2010 23:59:59; "; document.cookie=tmp; } </SCRIPT>

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • 「QL820」という製品名のブラザー製品について、複数枚印刷の時に連続して印刷できないトラブルが発生しています。
  • パソコンやスマートフォンのOSは何で、どのような接続がされているかの詳細も教えてください。
  • また、関連するソフトやアプリ、電話回線の種類についてもお知らせください。
回答を見る