- ベストアンサー
入力された全角英数字だけを見つけて半角に
掲示板の本文に打ち込まれた【全角】ローマ字&数字を 自動で【半角】化してくれるようなスクリプトを探しています。 本文テキストフィールドのonBlur時に使えたらと思っています。 本文なので、英数字だけでなく日本語(全角)も入ります。 ただ、英単語もしばしば使われるので、過去ログの検索効率のため、 英数字は全てを半角で統一できたらと思いまして...。 テキストフィールドに入力された本文から 全角のローマ字&数字だけを見つけ出し、それだけ半角化する、 こんなワガママを可能にしてくれるスクリプトや参考になる サイトさんがどこかにありませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
すみません。#1 です。 ご質問の「onBlur時に…」というのを読み落としてしまっていました。以下に、訂正したスクリプトを載せます。全角のアルファベットや数字の混じった文章を書き込んでから、フィールド外をクリックしてみてください。失礼しました~! <html><head> <script language="javascript"> function henkan(){ a = ""; x = document.frm.moji.value; for(i=0; i<x.length; i++) { cd = x.charCodeAt(i); if((cd >= 65296 && cd <= 65305) || (cd >= 65313 && cd <= 65338) || (cd >= 65345 && cd <= 65370)) { a += String.fromCharCode(cd - 65248); } else { a += x.charAt(i); } } document.frm.moji.value = a; } </script> </head> <body><form name="frm"> 下のエリアに何か文章を書き込んでから、エリア外をクリックしてみてください。<br><br> <textarea name="moji"rows=5 columns=30 onBlur="henkan();"></textarea> </form></body></html>
その他の回答 (1)
- hkd9001
- ベストアンサー率48% (99/204)
r_bel さん、おはようございます。 さてr_belさんのおっしゃっている「ローマ字」というのが「アルファベット」という意味であれば、以下のスクリプト(自作です…)が参考になるかもしれません。これは、テキストボックスに入れた文字列から全角英数字だけを半角に直してアラート表示させるものです(もし見当違いだったらごめんなさい)。では。 <html><head> <script language="javascript"> function henkan(){ a = ""; x = document.frm.moji.value; for(i=0; i<x.length; i++) { cd = x.charCodeAt(i); if((cd >= 65296 && cd <= 65305) || (cd >= 65313 && cd <= 65338) || (cd >= 65345 && cd <= 65370)) { a += String.fromCharCode(cd - 65248); } else { a += x.charAt(i); } } alert(a); } </script> </head> <body><form name="frm"> <input name="moji" type="text"> <input name="n1" type="button" value="変換" onClick="henkan();"> </form></body></html>
お礼
締め切り時、こちらにも良回答の点数を、と思いましたが、同じ方の返答には1つまでしか点数を付与できないとのこと...残念!でも気持ちは20+10ポイントです。ありがとうございました。m(_ _)m
お礼
ありがとうございます!!!まさにこれです。(ローマ字→アルファベットご指摘の通りです。嗚呼、お恥ずかしい。(^^;) さっそく拙サイトの掲示板に組み込ませていただきました。何とお礼を申し上げれば良いのか、言葉にならないほど感謝しております。こんなにスッキリと美しいコードがさくっと書けてしまうなんて、うらやましい!!ABC/ABCなどの配列を作るのかな?と思っていた素人の自分にはこのように文字コードで処理する方法は目からウロコでした。永久保存版としてJavaScriptの勉強にも活用させていただきます。本当にありがとうございました。