
テキストフィールド内にて、全角文字以外が入力されたらエラーをだすようにしています。そのとき以下のソースだと改行した時に、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ランキング
-
JavascriptでIMEのON,OFF制御
-
Excel VBA 見本通りに...
-
php でtabを空白に変換して表示...
-
なぜtabによるインデントはいけ...
-
stray '\\240' in programのエ...
-
指定した文字を始点にスペース...
-
ローマ数字などの文字化け対策...
-
ASCII文字列以外を検出する正規...
-
Pythonの勉強を始めました。バ...
-
XMLを作成してもタグしか表示さ...
-
AfterEffectsでイージーイーズ...
-
AirTag(エアタグ)やその他GPS...
-
H1タグに改行の<br>を使う
-
Dream Weaverの改行時にTabキー...
-
プルダウンメニューの開く方向...
-
ツールチップの表示時間の調整
-
Python 3.12.2 か一番最新のパ...
-
表示中のURLなどをバッチファイ...
-
テキストエリアの幅を10桁まで...
-
自分のサイトを開いた時にウィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 見本通りに...
-
C#のシリアル通信プログラムで...
-
ASP.NET TextBox 入力制限
-
JavascriptでIMEのON,OFF制御
-
JSONパース時に改行があるとエ...
-
ASCII文字列以外を検出する正規...
-
なぜtabによるインデントはいけ...
-
ローマ数字などの文字化け対策...
-
Eclipseの空白が変な...
-
ホームページ制作でコピーライ...
-
stray '\\240' in programのエ...
-
知っていたようで知らないことです
-
氏名の入力チェックに全角スペ...
-
インデントをスペースにするメ...
-
(再投稿) Word VBA マクロ スペ...
-
\\n って?
-
ソースコードの改行文字は何に...
-
半角空白チェックについて
-
テキストフィールドでの全角チ...
-
Pythonの勉強を始めました。バ...
おすすめ情報