
テキストエリア文字制限について
失礼します。
javascript初心者です。
複数のテキストエリアの文字制限を行いたく
苦戦しております。
いろいろと検索してみましたが・・・
2日ほど悩んでおります。
AとBでエラーが出た場合はCGIに流れず入力フォームに戻るのですが
Bでエラーが発生しない場合CGIに流れてしまいます。
ですの文字数制限をしても結局CGIに流れてしまうのですが
どのように記述すればよろしいでしょうか??
なんとか・・・ご教授いただければ幸いです。
よろしくお願いいたします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>入力文字数の制限</title>
<script language="javascript" type="text/javascript">
<!--
var MAXLENGTH = 10;//入力許容最大文字数
function tareachk(frm){
var tmp = frm.vin1.value;
var len = tmp.length;
if(len > MAXLENGTH){alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");}
var tmp = frm.vin2.value;
var len = tmp.length;
if(len > MAXLENGTH){alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");}
else{frm.submit();}
}
// -->
</script>
</head>
<body>
<form action="ccccc.cgi" method="post">
<textarea name="vin1" rows="5" cols="30">10文字まで入力可能</textarea><br>
<textarea name="vin2" rows="5" cols="30">10文字まで入力可能</textarea><br>
<input type="button" value="GO" onclick="tareachk(this.form);">
</form>
</body>
</html>
No.1ベストアンサー
- 回答日時:
>Bでエラーが発生しない場合CGIに流れてしまいます。
そのようにプログラムされています。
分解すると以下のようになっています。
if(len > MAXLENGTH){
alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");
}
if(len > MAXLENGTH){
alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");
}
else {
frm.submit();
}
次のように修正してみてください。
if(len > MAXLENGTH){
alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");
return; //★ここで処理を打ち切る
}
if(len > MAXLENGTH){
alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");
return; //★ここで処理を打ち切る
}
//★A、Bのチェックが通った場合だけ、ここに到達する。
frm.submit();
ありがとうございます!!
>return; //★ここで処理を打ち切る
ですか・・
んあるほど勉強になります。
先ほどためさせていただきましたが成功しました。
私の書き方であってるのかどうかわかりませんがおかげさまで勉強になりました。
<script language="javascript" type="text/javascript">
<!--
var MAXLENGTH = 10; //入力許容最大文字数
function tareachk(frm){
var tmp = frm.vin1.value;
var len = tmp.length;
if(len > MAXLENGTH){
alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");
return; //★ここで処理を打ち切る
}
var tmp = frm.vin2.value;
var len = tmp.length;
if(len > MAXLENGTH){
alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");
return; //★ここで処理を打ち切る
}
//★A、Bのチェックが通った場合だけ、ここに到達する。
frm.submit();
}
// -->
</script>
No.3
- 回答日時:
ソースを拝見させていただいた感じですと、同じ変数を使うということをしておられますが、あまりいい記述の仕方ではありません。
できれば、違う変数名を使い
var tmp1 = frm.vin1.value;
var len1 = tmp1.length;
var tmp2 = frm.vin2.value;
var len2 = tmp2.length;
この様な感じにして別々の変数に値を入れ、それを評価するといった感じの方がいいかなと思います。
評価の部分も、
if(len > MAXLENGTH ){
alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");
} else if( len2 > MAXLENGTH ){
alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");
}else{
frm.submit();
}
Aを評価して、問題なければBを評価するそれも問題なければ、送信処理をすると言った感じにすれば問題なく動作すると思います。
ありがとうございます。
書き方がまずかってですか><
うむむ。。。 再度勉強しなおしてみます。
ありがとうございます。
皆さんにご回答いただいて大変勉強になりました。
こちらも後程ためさせていただきます。
No.2
- 回答日時:
現在のコードだと
if(Aでエラー){Aアラート表示}
if(Bでエラー){Bアラート表示}else{サブミット}
という流れになっていますので、Aでのエラーはアラートを表示するかしないかにだけ関っていて、サブミットには関係ないことになってしまっています。
BのチェックをAがエラーでないときに実行するようにして、
if(Aでエラー){Aアラート表示}
else {
if(Bでエラー){Bアラート表示}else{サブミット}
}
または、単純に
if(Aでエラー){Aアラート表示}
if(Bでエラー){Bアラート表示}
if (!Aのエラー)&&(!Bのエラー){サブミット}
あるいは、まとめてチェックして
mes=""; //チェックメッセージ用
if(Aでエラー){mes=" A";}
if(Bでエラー){mes+=" B";}
if (mes) {alert(mes + "の入力可能文字は~~");} else{サブミット}
とか…やりかたは、いろいろあると思うけど。
ありがとうございます。
なるほどいろいろな書き方が・・・あるんですね。
参考になります。
私にはまだ難しいようなので今後のためにも参考にさせていただきます!。
本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jsonテキストデータの並び替え...
-
スマホ上で、左右スワイプで次...
-
jsで質問です。 formをsubmitし...
-
Outlookのアカウントがあるとメ...
-
オブジェクト配列の各メンバを...
-
初心者です。gulpでコンパイル...
-
jsで、配列内の文章を改行する...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javascriptエラーの原因が分か...
-
confirm()をはい/いいえ に切...
-
PDFフォームで条件つき金額を表...
-
Ajaxで通信したJavascript動作...
-
ホームページビルダーでスクリ...
-
IE8開発者ツールでソースの修正
-
HTAで,親ウインドウを閉じ...
-
javascriptのis null or not an...
-
IEにおいてjqueryが動いてくれ...
-
IEでiz_zoom(画像拡大表示Java...
-
getElementByIdで謎のエラーが...
-
ホームページで写真自動切り替...
-
Javascript でログインできない...
-
エディタ機能のTEXTAREAを作りたい
-
マクロについて。
-
javascriptのエラー
-
このページのスクリプトでエラ...
-
オブジェクトでサポートされて...
-
document.selectionについて
-
JavaScriptのエラー で困ってい...
おすすめ情報