重複した値とハイライトを持つHTML入力テキストボックス(すべて同じクラスに属する)を検出するJavascript関数を実装しようとしています。それは赤の枠線ですが、正しく動作しません。状況に応じて、入力ボックスのすべてではなく、繰り返し値で塗りつぶします。例として、1番目、3番目、4番目のテキストボックスに繰り返し値が挿入されている場合は、3番目と4番目のテキストボックスのみがペイントされます。しかし、2番目のボックスの値が他の3と同じであれば、すべてのボックスがペイントされます。私はこの問題をどのように乗り越えることができるか知りたい。前もって感謝します!HTML入力テキストボックスに重複している値がないかどうかを確認し、境界線をペイントしないでください
ここところでJSコードです:
function CheckDuplicates(){
var numbers = [];
$('input[class="allinput planrequestnumber"]').each(function(i,e) {
numbers.push($(e).attr('id'));
});
var duplicatesExist = false;
for (var i = 0; i < numbers.length; i++) {
var first = '#' + numbers[i];
var second = '#' + numbers[i+1];
if(($(first).val().length == 9) && ($(second).val().length == 9)){
if($(first).val() == $(second).val()){
$(first).css('box-shadow', 'inset 0 0 0 3px red');
$(second).css('box-shadow', 'inset 0 0 0 3px red');
duplicatesExist = true;
}
else{
$(first).css('box-shadow', '');
$(second).css('box-shadow', '');
duplicatesExist = false;
}
}
}
return duplicatesExist;
}
そして、HTMLコード(入力ボックス用):
<INPUT id="num_principal" runat="server" style="WIDTH: 135px" class="allinput planrequestnumber" onchange=CheckDuplicates() maxLength=9 placeholder="" data-index="0" NAME="num_principal">
<INPUT id="num_extra_1" runat=server style="WIDTH: 135px" class="allinput planrequestnumber" onchange=CheckDuplicates() maxLength=9 placeholder="" data-index="1" NAME="num_extra_1">
<INPUT id="num_extra_2" runat=server style="WIDTH: 135px" class="allinput planrequestnumber" onchange=CheckDuplicates() maxLength=9 placeholder="" data-index="2" NAME="num_extra_2">
<INPUT id="num_extra_3" runat=server style="WIDTH: 135px" class="allinput planrequestnumber" onkeypress="return isNumberKey(event)" onkeyup=ValPhone(this); onchange=CheckDuplicates() maxLength=9 placeholder="" data-index="3" NAME="num_extra_3">
UPDATE:私は私のJSコードにいくつかの微調整をしたが、それは完全にはまだありません機能的。まだ値が繰り返されている場合、テキストボックスがペイントされないケースがあります。
あなたはすぐに次のいずれかに各項目を比較しているが、あなたは最初に*ソートした場合、これが唯一*配列を、適切な結果が得られます。さらに、*最後の*項目が重複しているかどうかを本質的に返すだけなので、あなたのelseの場合は 'duplicatesExist = false;'を持たないようにしてください。 ** [this one](https://stackoverflow.com/questions/840781/easiest-way-to-find-duplicate-values-in-a-javascript-array)**のような同様の質問を読むことをお勧めします右方向へのプッシュ。 – Santi
オリジナルの投稿を更新しました。私はまだこれに問題があります。 – user3647720
これは本当です。特定のケースのソートポイントは、必要なものと正確に一致しない場合があります。私は答えを投稿します。 – Santi