お世話になります。
入力フォームでの入力文字数に制限を持たせたいのですが、どのように実装したらよいでしょうか?
入力制限をする理由としてまず入力情報をDBに登録するために必要なもので、そのカラムに文字数制限を設けているので考慮する必要があります。maxlength=30で設定して今はやっているのですが、半角30文字でのデータ登録は行えるのですが、全角だと15文字までしか登録できません(フォームへの入力は30文字可能)
そのため全角30文字入力して登録を試みても当然エラーになります。
全角15文字、半角30文字以上になったら入力を反映させないようにしたいのす。ご協力お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
javascriptでの文字数の制限はこのように行うことができます。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>文字数チェック</title> 6 <script> 7 function check() { 8 var getText = document.form.text1.value; 9 if (getText.length >= 15) { 10 alert("文字数が制限をこえています"); 11 } else { 12 alert("okです"); 13 } 14 } 15 </script> 16</head> 17 18<body> 19<form name="form"> 20 <input name="text1" id="text1" type="text"> 21 <button onClick='check()'>クリック</button> 22</form> 23</body> 24</html>
ですが、一部のユーザーはjavascriptを無効にしている場合がありまして、そのようなユーザーも扱う必要があるときは、この文字数制限だけでは不十分です。また、maxlength属性は自動で文字数が削られるのでユーザーに優しくないと思いますので、使わないほうがいいのではないかと思います。
そんなわけで、サーバー側でも送られてきた値をチェックしてあげないといけません。
今回はPHPでの文字数のチェックの仕方を書いておきます。PHPでの文字数チェックはmb_strlenを使うことで楽に行えます。
PHP
1function check($str,$max){ 2 if(!is_string($str)){ 3 return false; 4 } 5 $len = mb_strlen($str); 6 return ($len >= $max); 7} 8 9$ch = "文字列文字列"; 10if(check($ch,15)){ 11 echo("aaa"); 12}else{ 13 echo("bbb"); 14}
もし、いろいろあって設定していたサイズ以上のデータがデータベースに格納されるような要求が送られた場合、そのデータは格納されず、エラーが発生したり、値が長すぎる場合、エラーを出さずに文字が切り捨てられたりするのが一般的ではないかと。
投稿2016/12/02 05:12
編集2016/12/02 07:13
退会済みユーザー
総合スコア0
0
バイト数で制限するならこんな感じです
HTML
1<script> 2$(function(){ 3 $('input.test').on('input',function(){ 4 var maxbytes=30; 5 var mybytes=new Blob([$(this).val()]).size; 6 if(mybytes<=maxbytes){ 7 $(this).data('val',$(this).val()); 8 }else{ 9 $(this).val($(this).data('val')||''); 10 mybytes=new Blob([$(this).val()]).size; 11 } 12 $('span.test').text(mybytes+'バイト'); 13 }); 14}); 15</script> 16 1730バイト制限:<input type="text" class="test"><span class="test">0バイト</span> 18
投稿2016/12/02 03:49
総合スコア117682
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
投稿2016/12/02 02:36
総合スコア3116
0
HTMLのmaxlengthで、一次的な入力文字数制限を設けることは可能です。
HTML
1<input type="text" maxlength="10" id="name">
さらにJavaScriptで文字数のチェックをする事も可能です。
JavaScript
1$('form').submit(function() { 2 if($(this).val().length > 10) { 3 return false; 4 } 5}
ただし、セキュリティ的な事を考えるのであれば、最終的にはサーバ側でPHPやJava等を使ってチェックするのが望ましいかと思います。
理由としては、POSTのHTTP通信を手動で発行する事も可能で、WEBページを介さずにツール等からPOSTしようとしてくる事も可能だからです。
まぁ文字数あふれたからどうだというところはありますが、文字種チェック等色々やるのであれば、クライアント側とサーバ側両方で入力チェックを行うのが望ましいかと思います。
投稿2016/12/02 01:50
総合スコア5405
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
「maxlength」ではなく、JavaScriptで対応したいということですか?
投稿2016/12/02 01:35
総合スコア952
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。