プロが教える店舗&オフィスのセキュリティ対策術

画像のように2回同じように打つとアラートを出すようなプログラミングを作ろうとしてます。
let Exist = new Array();
while(true){
let msg = "";
let inp = inputs;
console.log(inp)
if(Exist[inp]){
msg = inp+"は既に存在します";
}else{
msg = inp+"は存在しないのでExistに登録します";
Exist[inp] = true; // false; //
}
alert(msg);
}
inputsにテキストの要素を入れています。2回同じことを打つと
if(Exist[inp]){
msg = inp+"は既に存在します";
}
のイベントを起こしたいのですが今のままだと1回目で
if(Exist[inp]){
msg = inp+"は既に存在します";
}
のイベントが起きてしまいます。
どうすれば2回目以降でこのイベントを発生できるかを教えてください。
サンプルコードでいいのでよろしくお願いします。

「Javascriptで同じ数字を2回打つ」の質問画像

A 回答 (14件中11~14件)

No2です。



No3さん、ご指摘ありがとうございます。
修正しました。
こんな感じだとうまくいくでしょうか。

<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" />

<script>
const Inputs = document.getElementsByName('inputs');
const Exist = new Array(Inputs.length).fill(null);
Inputs.forEach((ipt,idx)=>{
ipt.addEventListener('keyup',()=>{
let checkChange = (Exist[idx] !== ipt.value);
let checkIndex = (Exist.indexOf(ipt.value) >= 0);
if(checkChange && checkIndex){
alert(ipt.value + 'はすでに存在します');
}
Exist[idx] = (ipt.value === '')? null : ipt.value;
},false);
});
</script>
    • good
    • 0

#2>



数字を入力した後、その数字を削除したとします。
フォーカスを動かすと数字が無いのに反応しています。
どうしたらよいのでしょう?
    • good
    • 0

こんなイメージでしょうか。



<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" /><br />
<input type="text" name="inputs" value="" />

<script>
const Inputs = document.getElementsByName('inputs');
const Exist = new Array(Inputs.length).fill(null);
Inputs.forEach((ipt,idx)=>{
ipt.addEventListener('keyup',()=>{
if(Exist.indexOf(ipt.value) >= 0){
alert(ipt.value + 'はすでに存在します');
}
Exist[idx] = ipt.value;
},false);
});
</script>
    • good
    • 0

HTMLのtextariaを使用し、その入力エリアに対する以下のイベントのいずれかを使用すれば・・・と思います。



oninput
onkeyup

で、そのイベントで呼び出されるJavascript関数では・・・

(1) 入力されたのが数字かチェックし数字でない場合はエラー
(2) 数字の場合は直前で入力された数字と同じかチェックし同じ場合はエラー
(3) 上記でない場合は入力された数字を次回チェック用の変数に代入

・・・ということを行えばよいのではないでしょうか?
参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!