テキストフィールド内にて、全角文字以外が入力されたらエラーをだすようにしています。そのとき以下のソースだと改行した時に、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("全角文字のみ");
}
}
対処方法をどなたかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
<html>
<head>
<title></title>
</head>
<body>
<textarea id=tArea></textarea>
<script language="JavaScript">
function jstrlen(str) {
len = 0;
for (i = 0; i < str.length; i++) {
wrk = str.charCodeAt(i)+"";
if(wrk == 10 || wrk == 13)len++;
// 改行は↑でlenに1を足して、全角文字と同じ扱いする
alert(wrk)
if (wrk.length > 3) { // 2バイトの字なら
len++;
}
len++;
}
return len;
}
function isZen(str) {
len1 = jstrlen(str.value);
len2 = str.value.length * 2;
if(len1 != len2){
alert("半角文字が混在");
str.focus() ;
}else{
alert("全角文字のみ");
}
}
</script>
<button onClick=isZen(tArea)>くり</button>
</body>
</html>
escape( ) は IE と NN で動作が違うらしいから
2バイトの判定は charCodeAt( ) を使った。
問題のエンターは、エンターで改行コードの
13,10 がそれぞれ1バイトで半角文字になるから
13 または 10 の場合に特別な処理をした。
そのままのソースで escape( ) でやる場合でも
wrk の値が改行コードであったなら特別な処理を
してやれば問題は解決する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NET TextBox 入力制限
-
C#のシリアル通信プログラムで...
-
なぜtabによるインデントはいけ...
-
PDF注釈の内容をJavaScriptを使...
-
Excel VBA 見本通りに...
-
JSで全角英数記号を半角英数記...
-
XMLを作成してもタグしか表示さ...
-
カーソルを合わせると説明を表...
-
preタグがプロの現場であまり使...
-
VC、コンソールアプリ結果の...
-
改行できる・できない入力ボッ...
-
AfterEffectsでイージーイーズ...
-
テキストエリア内の改行禁止
-
品質表示タグが付いてない商品
-
キーフレーム
-
GoogleChromeでレイアウトが左...
-
\\n \\r \\t について
-
<h1>を使っても無改行にするには
-
pixivの消えないブックマークタ...
-
Hタグを改行禁止にしてspanのよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 見本通りに...
-
ASP.NET TextBox 入力制限
-
ASCII文字列以外を検出する正規...
-
C#のシリアル通信プログラムで...
-
Pythonの勉強を始めました。バ...
-
JavascriptでIMEのON,OFF制御
-
ローマ数字などの文字化け対策...
-
stray '\\240' in programのエ...
-
php でtabを空白に変換して表示...
-
半角スペースを含む文字列を変...
-
氏名の入力チェックに全角スペ...
-
Eclipseの空白が変な...
-
インデントをスペースにするメ...
-
ホームページ制作でコピーライ...
-
指定した文字を始点にスペース...
-
ボタンコントロールのTEXT...
-
改行されたデータをIEに貼り付...
-
ソースコードの改行文字は何に...
-
Web上のテキストボックス
-
カラムの末尾にスペースが入る
おすすめ情報