前提・実現したいこと
Webシステムの入力項目に、アルファベットっぽいけどアルファベットではない文字が入力されてしまい困っています。
例えば「Ⅴ」や「Ⅽ」や「K」です。
入力経路は何となくは分かっていて、日本語入力モードの時に「v」とうって変換ボタンを押した時にでてくる「V」っぽい文字を、どれが正しい「V」かわからず選んでしまっているようです。
こういった文字の入力があった場合に強調表示をしてユーザーに知らせたいのですが、どういう文字を抽出をしたらいいのかで困っています。
後述の通り、当初は上記の3文字だけ赤くする措置を取っていたのですが、さらに別の似たような文字が出てきてしまいました。
今は発覚するたびに1文字ずつ判定に追加してしのいでいる状態です。
全角文字を入れる必要がある項目で、通常はこういった文字の入力ミスをどうやてユーザーに伝えるのでしょうか?
もしくは、通常キーボードでうてないような文字の総称(「半角英数」のような感じ)はないでしょうか…。
そういう用語がわかれば何とか自分でも調べられそうなのですが、今はキーワードも思い浮かばない状態です。。
何かヒントでもいいのでアドバイス頂けたら嬉しいです。
※以前LinuxいうパソコンとWindowsでは文字の種類(コード?)が違うという話を聞いたことがあるのでタグに「Windows」を入れました。関係がなかったらすみません。。。
発生している問題・エラーメッセージ
アルファベットと似た文字を間違えて入力される。
※※追記※※
何が困っているか書いた方がいいとアドバイス頂いたので追記をします。
このシステムは社内の生産管理システムで、顧客から送られてきた原材料等を加工して返すラインの管理をしています。
該当の項目は顧客側で送ってきた原材料の個体(便宜上ロット番号と呼んでいます)を特定するためのコードや名前のようなものが入っています。
多くは半角英数なのですが、一部日本語だったり全角英数だったり見たことないような文字が入っていたりします。
顧客からデータを受け取る時は、4割ぐらいはデータで受け取り、6割は紙で届くので人間が入力しています。
加工が終わると、終わりましたよという書類としてそのデータや書面を顧客に送り返します。
数か月前から書面でやりとりしていた顧客(お得意様)のシステムが変わって、弊社⇒顧客への送り返しだけデータでやりとりするようになりました。
その時にこの項目を顧客側のシステムで原材料の個体を特定するキーに使用されているようなのです。
今まで見た目がVなら実質なんでもよかった(人間はVと認識してくれるから)のに、システムでは区別されるので顧客側からクレームが来てしまっています。
入力する側の人間も今まで全半角すら区別していなかったような人たちですし、見た目がそっくりなので何を気を付けていいのかわからないという状態です。
そこで赤くして「あなたたちは赤がなくなるまで頑張るのです」という指導をしようとしています。
普段から変わった文字を入力している人たちは、変わった文字に精通しているので「変な文字は赤くしますが気にしないでください」が通用しそうなので、エラーにはできないけど赤くするぐらいはセーフと考えています。
※※※
該当のソースコード
動作する環境
※フォーカスアウトで文字強調したdivをかぶせています。
html
1<div id="vue-element"> 2 <div class="input-group"> 3 <label>項目名</label> 4 <input type="text" v-model="komoku" @blur="highlightDisp=true" /> 5 <div v-html="highlight" class="over" v-show="highlightDisp" @click="click($event)"></div> 6 </div> 7</div>
javascript
1 new Vue({ 2 el: "#vue-element", 3 data(){ 4 return { 5 highlightDisp: true, 6 komoku: "ABCDKFGH", 7 } 8 }, 9 computed:{ 10 highlight(){ 11 // ↓文字を判定しているところ 12 const text = this.komoku.replace(/[ⅠⅭⅤⅯKⅩLⅮ]/g, 13 function(s){ 14 return '<span class="highlight">' + s + '</span>'; 15 }); 16 return text; 17 } 18 }, 19 methods:{ 20 click(event){ 21 this.highlightDisp = false; 22 event.target.previousElementSibling.focus(); 23 } 24 } 25 });
css
1 .input-group{ 2 box-sizing: border-box; 3 width: 10rem; 4 position:relative; 5 } 6 7 input, .over{ 8 font-size:14px; 9 box-sizing: border-box; 10 height: 30px; 11 padding: 8px; 12 width: 100%; 13 border: 1px gray solid; 14 background-color: #FFFDE7 15 } 16 .over{ 17 background-color:#ECEFF1; 18 position:relative; 19 top:-30px; 20 vertical-align:middle; 21 display: flex; 22 align-items: center; 23 } 24 .highlight{ 25 font-weight:bold; 26 color:red; 27 }
試したこと
●半角英数記号以外は全部赤くする
⇒全角英数を入力する人たちから紛らわしいと苦情殺到
●単純に「Ⅴ」「Ⅽ」「K」だったら赤くする
⇒別の文字を入力する人が現れてしまいイタチごっこに・・・
補足情報(FW/ツールのバージョンなど)
ブラウザ:Google Chrome
OS(クライアント側):windows 7~10
回答4件
あなたの回答
tips
プレビュー