質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

231閲覧

ユーザーの入力に対する入力制限

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/05/13 08:01

ユーザーの入力した数字で、同じ数字を入力できないように入力制限したいです。

HTML
<input id='aaa1' type='text'>
<input id='aaa2' type='text'>
<input id='aaa3' type='text'>

<div id='bbb'></div> <input id='click1' type='submit' value='ここをクリック'>

JS
ver bbb= document.getElementById('bbb');
ver click= document.getElementById('click1');
click.addEventListener{' click',fuction(){
arr=[];
for(i=0; i<3; i++){
arr[i]= document.getElementById('aaa' +(i + 1)).value);

for(j=0; j<arr.length ; j++){
if(arr === arr[j]){
bbb.innerHTML='異なる数値を入力してください。' ;
}
}

},false
);

このようなコードを書いてみたのですが、まあ見事に何書いてもこのエラー文が出てしまいます。
同じ配列を比較してることになるのだから当たり前なのですが、
文字列arrのなかで、for文を回し、同じ数値を入力させないようにするためにはどのようなコードを書けばいいのでしょうか?

どなたか教えてください。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2018/05/15 06:13

「このエラー文」とは? fuctionと書いてあって動かないような気がしますが、実際にこのコードで検証したのでしょうか?
guest

回答2

0

数値のチェックをするかどうかはともかくユニークかどうかはこうします
(idでやってもいいですが、クラスのほうがわかりやすいので今回はそちらで)

javascript

1$(function(){ 2 $('.aaa').on('input',function(){ 3 var arr1=$('.aaa').map(function(){ 4 return $(this).val(); 5 }).get().filter(function(x){ 6 return x!==""; 7 }); 8 var arr2=arr1.filter(function(x,y,z){ 9 return z.indexOf(x)==y; 10 }); 11 $('#bbb').text(arr1.length!=arr2.length?"異なる数値を入力してください":""); 12 }); 13});

HTML

1<input id='aaa1' class="aaa" type='text'> 2<input id='aaa2' class="aaa" type='text'> 3<input id='aaa3' class="aaa" type='text'> 4<div id='bbb'></div>

投稿2018/05/14 00:38

yambejp

総合スコア114777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

はじめまして

はじめに、バリデーションが動作しなかった原因ですが、値比較の際にarrそのものとarr[j]を比較しているので

javascript

1if (arr[i] === arr[j]) { 2 bbb.innerHTML = '異なる値を入力してください。'; 3}

と変更すれば、正しく値が比較されます


ここからはエラーの修正です。

上記のスクリプトにはいくつかタイポがありました

javascript

1ver <1> bbb= document.getElementById('bbb'); 2ver <1> click= document.getElementById('click1'); 3 4click.addEventListener{<2>' click',fuction <3>(){ 5 arr=[]; 6 for(i=0; i<3; i++){ 7 arr[i]= document.getElementById('aaa' +(i + 1)).value)<4>; 8 9 for(j=0; j<arr.length ; j++){ 10 if(arr[i] === arr[j]){ 11 bbb.innerHTML='異なる数値を入力してください。' ; 12 } 13 } 14 <5> 15},false);
  1. ver -> var
  2. { -> ( (開きカッコが違う)
  3. fuction -> function
  4. value) -> value (閉じカッコが多い)
  5. -> } (閉じカッコが足らない)

以上5点(6箇所)を修正すれば正しく動作するかと思います

余談)
余計なお世話かもしれませんが、タイポが多い場合はコードをハイライトしてくれるエディタを利用して見てはいかがでしょうか?

Visual Studio Code -> https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx

リアルタイムにどのコードの書き方がおかしいとかカッコが足りないとかを指摘してくれます

投稿2018/05/13 09:18

simochee

総合スコア114

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問