javascriptでJIS第一/第二水準の文字をチェック

このQ&Aのポイント
  • javascriptの初心者です。フォームのテキストボックスにJISの第一水準、第二水準以外の文字が入ったらエラーを返したいと思っています。正規表現を使用してチェックするコードを作成しましたが、一部の漢字がエラーとなってしまいます。これではチェックができないのでしょうか?どなたか教えていただけると助かります。
  • javascriptの初心者です。フォームのテキストボックスにJISの第一水準、第二水準以外の文字が入った場合、エラーを表示したいと考えています。正規表現を使用してチェックするコードを書きましたが、一部の漢字がエラーとなってしまい、チェックが上手く機能しません。どうすれば正しくチェックできるか、教えていただけると幸いです。
  • javascriptの初心者です。フォームのテキストボックスにJISの第一水準、第二水準以外の文字が入力された場合、エラーを表示したいと思っています。正規表現を使用してチェックするコードを作成しましたが、特定の漢字がエラーとなりません。問題の原因や解決策について教えていただけると助かります。
回答を見る
  • ベストアンサー

javascriptでJIS第一/第二水準の文字をチェック

javascriptの初心者です。 フォームのテキストボックスにJISの第一水準、第二水準以外の文字が入ったら エラーを返したく、いろいろ調べたら正規表現で   第一水準:[亜-腕]   第二水準:[弌-熙] と書かれているサイトを見つけて、以下のコードを作成しました。 function nameCheck() { var str = document.form1.name.value; if( str != "") { check = /[^亜-腕弌-熙]+/ if ( str.match(check) ) { alert("使用できない文字が含まれています。"); document.form1.name.focus(); } } } 実際にこれを実行すると、「崎の"大"の部分が"立"」になっている漢字は チェックできますが、「田」「山」と簡単な漢字がエラーとなってしまいます。 これではチェックが出来ないのでしょうか? どなたかご教授願えたらと思います。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

たしかJavaScriptの文字はUnicodeで扱われていたはずなので、JIS系に変換しなければ範囲の記述はできません。 このようなライブラリで変換すればできそうです。 http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html

ychico
質問者

お礼

SortaNerd_様 早速にありがとうございます。 教えてくださったURLを確認いたしました。 JIS系に変換したあとに、第1水準、第2水準に含まれているかどうかを チェックしたらいいという事ですよね? 試してみたいと思います!

関連するQ&A

  • 外字をJIS水準内の文字に置き換えたい

    髙→「高」 﨑→「崎」 というように、外字にはそれぞれ当てはめるべきJIS水準内の文字が用意されているかと思います。 このように、使用頻度の高い文字であれば頭で覚えていられるのですが、初めて見る漢字、難しい漢字の外字をJIS水準内の漢字に置き換えなければならない場合、皆さんならどうしますか? ・外字をJIS水準内の文字に置き換えるための対比表等があれば大変助かります。 ・また、いわゆる「外字変換ツール」というものは有効でしょうか? 使用OS:WINDOWS2000  

  • javascript 要素取得

    htmlでチェックボックスを作り、その値をjavascriptで取得したいと思い、 下記のようなプログラムを書きました。 セレクトボックスから複数選択できるようにしたいのですが、 表示されるのは複数選んだ際に一番初めに選択したものだけです。  例) 「あああ」と「いいい」を選ぶと「あああ」のみ表示される。 しかし、これを「あああ.いいい」としたいのです。 できれば、 「あああ  いいい」 と改行できるといいです。 formの中にたくさんの項目があるため、 forのところがうまくいっていないのでしょうか? どなたかよろしくお願いします。 javascript側 function checkbox(){  var str="";  for(i=0;i<document.form1.elements.length;i++){   if(document.form1.elements[i].checked){     if(str != "") str = str + ".";     str = str + document.form1.document[i].value;   }  }  if(str == ""){   alert("入力してください");   return false;  }else{   document.form1.submit();  } } HTML側 <form action="<%=遷移先ページ%>" method="post" name="form1"> <select 複数> <input 複数> <input type="checkbox" name="document" value="・あああ"/>あああ <input type="checkbox" name="document" value="・いいい"/>いいい <input type="checkbox" name="document" value="・ううう"/>ううう <input type="submit" value="Submit" onclick="return checkbox();">

  • JavaScriptでの文字の流れる掲示板について

    ホームページのJavaScriptで、「文字が流れる掲示板」のソースを下記に書きましたが、文字の色やFormの背景色などは、どのように変更したらよいでしょうか、分かりましたら教えてください。よろしくお願いします。 <FORM NAME="time"><INPUT TYPE="text" NAME="str" SIZE="100" ></FORM> <SCRIPT LANGUAGE="JavaScript"> <!--  str = "helloword !!"; str = " " + str; i = 0; function tick() { document.forms['time'].elements['str'].value = str.substring(i, str.length) + str.substring(0, i); i = ++i % str.length; setTimeout("tick()", 120); } tick(); // --> </SCRIPT>

  • Javascriptでセレクトメニューの選択チェックの方法

    Javascriptでセレクトメニューのフォームをチェックしたいのですが、 リストメニューの「選択して下さい」を選んだままだと、「番号を選択して下さい。」とエラーを出したいのですが、下記の様に書いてみたのですが、うまく動きません…どのように書けばいいか教えて下さい。宜しくお願いします。 <script language=\"JavaScript\"> <!-- function Check() { var str = document.form.a.value; if(document.form.a.value == "0") { alert("番号を選択して下さい"); } //--> </script> <form id="form" name="form" method="post" action="##"> <select name="a" onblur="Check();"> <option value="0">選択して下さい</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="submit" name="Submit" value="登録" onClick="Check();"> </form>

  • JavaScript文字列連携に関して

    質問させて頂きます。 下記のようなテキストフォームがあったとして、submit押された時に、jsを走らせ、テキストに数値以外が入っていないかチェックしたいと考えています。 ------------------------------------------------- <input type="text" name="text_1" /> <input type="text" name="text_2" /> <input type="text" name="text_3" /> ------------------------------------------------- チェック自体は下記のような記述で行うことが出来ました。 ------------------------------------------------- if(document.form1.text_1.value.match(/[^0-9]+/)){ //文字です } if(document.form1.text_2.value.match(/[^0-9]+/)){ //文字です } if(document.form1.text_3.value.match(/[^0-9]+/)){ //文字です } ------------------------------------------------- ですが、同じif文を並べて記述したくなかったので、for文を使って記述したいと考えました。 ------------------------------------------------- for (var i=1 ; i<=3 ; i++){ if(document.form1.text_1.value.match(/[^0-9]+/)){ //文字です } } ------------------------------------------------- この時、if文内のtext_1をどのように記述すれば、text_1,text_2,text_3と変化させることが出来るでしょうか。 ※「text_ + i +」等試してみましたが、正常に動作出来ませんでした。 ご存知の方がいらっしゃいましたら、ご教授頂けると助かります。 また、質問の内容に不備な点があるかもしませんが、その際はご指摘頂けると幸いです。 よろしくお願いいたします。

  • チェックボックスの連動でJavaScriptの記述を短くしたい。

    【あ】、【い】という項目があり、それぞれの項目内にA、Bというチェック項目があります。 【あ】項目のAにチェックを入れると【い】のAにもチェックが入るように作りました。 以下のソースでもなんとか動くのですが、【あ】、【い】という項目が増える事とA、Bというチェック項目が増えることが判り、JavaScriptのソースを少しでも短くしたいのですが、なにか好い方法がございましたらお教え頂ければ幸です。 /************参考ソースです*****************/ <html> <head> <title>無題ドキュメント</title> <script> function check_a(){ if(document.form.a.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_b(){ if(document.form.b.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } function check_aa(){ if(document.form.aa.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_bb(){ if(document.form.bb.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } </script> </head> <body> <form name="form"> 項目【あ】 <input type="checkbox" name="a" onclick="check_a()"> A<BR> <input type="checkbox" name="b" onclick="check_b()"> B<BR> <br /> 項目【い】 <input type="checkbox" name="aa" onclick="check_aa()"> A<BR> <input type="checkbox" name="bb" onclick="check_bb()"> B<BR> <br /> </form> </body> </html> /*************************/ 何卒、宜しくお願い申上げます。m(_ _)m

  • JavaScriptで入力制御&チェックをしたい

    JavaScriptを使ってフォームの質問1の3を答えたら質問2が入力可能なるようにしたです。 name="q2"の形にすると制御できますが、phpでの受け取りが、最後にチェックされた値しか表示されないためname="q2[]"にしたいです。 しかし、name="q2[]"にした時のJS側の記述がわかりません。 name="q2[]"にするとphpの配列でチェックされた値全部を取得できるので、name="q2[]"の形でJSの 修正をしたいのですが、どのように記述すれがいいのでしょうか? なお、JSで難しい場合は、JSではなくPHPの修正でもかまいません。 結果、入力制御、入力チェックもでき、チェックボックスの値すべてがpostでphpに送れればいいです。 現状では下記のようにしています。 どうぞよろしくお願いいたします。 <form id="form1" name="form1" method="post" action="kakunin2.php" > <label for="q1">質問1</label> <p>今回のイベントはどうでしたか?</p> <p> <input type="radio" name="q1" value="よかった" onClick="changeDisabled()" />よかった   <input type="radio" name="q1" value="普通" onClick="changeDisabled()" />普通   <input type="radio" name="q1" value="おもしろくなかった" onClick="changeDisabled()" />おもしろくなかった <br /><span id="q1_error" name="q1_error"></span> </p> <label for="q2">質問2</label> <p>質問1で「おもしろくなかった」とお答えの方に質問です。<br />おもしろくなかった理由は何ですか?</p> <p> <input type="checkbox" name="q2[]" value="退屈だった" disabled="disabled" />退屈だった   <input type="checkbox" name="q2[]" value="時間が長かった" disabled="disabled" />時間が長かった   <input type="checkbox" name="q2[]" value="時間が短すぎた" disabled="disabled" />時間が短すぎた   <br /><span id="q2_error" name="q2_error"></span> </p> <input type="button" name="submit_01" id="submit_01" value="確認" onclick="check()"/> </form> ----------以下JavaScript---------- var frm = document.form1; var q1 = ""; var q2 = ""; var error_flag = ""; //質問1のチェック for(i = 0; i < frm.q1.length; i++){ if(frm.q1[i].checked){ q1 = frm.q1[i].value; } } if(q1 == "") { document.getElementById("q1_error").innerHTML = "質問1におこたえください"; error_flag = "1"; }else{ document.getElementById("q1_error").innerHTML = ""; } //質問2のチェック if(q1 == "おもしろくなかった" ) { for(j = 0; j < frm.q2.length; j++){ if(frm.q2[j].checked){ q2 = frm.q2[j].value; } } if(q2 == "") { document.getElementById("q2_error").innerHTML = "質問2におこたえください"; error_flag = "1"; }else{ document.getElementById("q2_error").innerHTML = ""; } }else{ document.getElementById("q2_error").innerHTML = ""; } if(error_flag !=""){ alert("入力が正しくありません!"); }else{ document.form1.submit(); } } //質問2のチェックボックスを使えるようにするかどうかを設定する function changeDisabled(){ //フォームのオブジェクトを入れておく var frm = document.form1; //質問1で「おもしろくなかった」を選ばれている場合に質問を入力できるようにする if(frm.q1[2].checked) { //チェックが入っていた場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = false; } }else{ //チェックが入っていなかった場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = true; } document.getElementById("q2_error").innerHTML = ""; } } ----------以下PHP(kakunin2.php)での受け取り---------- $q2 = $_POST["q2[]"]; for($i=0; $i<count($_POST["q2"]); $i++){ $q2[$i] = $_POST["q2"][$i] .","; echo $q2[$i]; }

  • 入力文字チェックについて

    JavaScript初心者です。よろしくお願いします。入力された文字のチェックを行いたいと考えています。図面名を入力して、登録ボタンを押すと採番されるシステムで、1つだけ採番が可能なものと最大50個迄一括で採番が出来るものと2つあります。1つだけ採番であれば、下記にある通りで問題はないのですが、50個迄一括で採番する方ではエラーが表示されます。 エラー;'document.iform.zumen_mei.value'はNullまたはオブジェクトではありません。 入力文字チェック <SCRIPT language="JavaScript"> <!-- function zumenmeicheck() { var str = document.iform.zumen_mei.value; if( str.match( /[,,~1-99A-Zア-ン]+/ ) ) { alert("図面名にカンマ、~、英数字が全角で入力されている可能性があります。確認してください。"); return 1; } return 0; } function AllCheck() { var check = 0; check += zumenmeicheck(); if( check > 0 ) { return false; } return check; } //--> 図面名が最大で50個存在するもの Response.Write "<FORM NAME=""iform"" ACTION="" ./fukuzuban-2.asp"" METHOD=""POST"">" For i=1 To 50 Response.Write "<TR><TD><INPUT TYPE=""TEXT"" STYLE=""background-color:skyblue"" NAME=""zumen_mei" & i & """ MAXLENGTH=""100"" SIZE=""40"" onblur=""zumenmeicheck();"">" Next Response.Write "<INPUT TYPE=""SUBMIT"" VALUE="" 登録 "" onClick=""return AllCheck();"">" 色々と調べてはみましたが、解決出来ませんでした。何卒よろしくお願いします。

  • JavaScriptで日付の正規表現の方法

    お世話になっております。たびたびすみません。。 昨日、教わった正規表現の仕方(XX-XXXXXXX-XXXXX X=1-9)はよくわかったのですが、その方法を真似て 2004/02/02 12:00 みたいな日付が正しいかどうかチェックするスクリプトを考えてみたのですが、エラーがでてうまく動きません。 str=document.FORM.TEXT.value; if(str != ""){ if(! str.match(/^[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}$/)){ window.alert("ERR"); document.FORM.TEXT.focus(); return(false); } } 形式は (YYYY/MM/DD hh:mm)です。 まったくわかりません・・・すみませんが、よろしくお願いいたします。

  • JavaScriptの文字表示速度

    こんにちは。 JavaScriptの事でお聞きしたい事があります。 まではこれを見てください。 <SCRIPT language="JavaScript"> <!-- msg = "ここにメッセージを入力すると、途中から少しだけ早くなる"; stcnt = 0; wid =60; blnk = ""; for(i=0; i<wid; i++) blnk += " "; str = blnk + msg ; timeID = 10; function scroller() { document.guide.message.value = str.substring(stcnt++,stcnt+wid); if (stcnt>msg.length + wid) stcnt=0; clearTimeout(timeID); timeID = window.setTimeout("scroller()",100); } // --> </SCRIPT> -------------------- 文字を出したいところに <SCRIPT language="JavaScript"> <!----- document.write("<CENTER><FORM NAME='guide'>") document.write("<INPUT TYPE='text' NAME='message' SIZE=40></FORM></CENTER>") scroller(); // --> </SCRIPT> -------------- と張ります。 このスクリプトですが、htmlに張ると小さい文字表示の部分が出てきて 右から左にむかって文字が流れていきますが、途中から 文字の表示速度が速くなっています。 これてなぜか自分でもいろいろとやってみたのですが、いまいちよくわかりません。 説明をお願いできますでしょうか。 よろしくお願いします。

専門家に質問してみよう