Ich versuche eine JavaScript-Funktion zu implementieren, die HTML-Eingabetextfelder mit doppelten Werten erkennen und hervorheben soll Es ist rot umrandet, aber es funktioniert nicht richtig: Es malt nur einige der Eingabefelder mit wiederholten Werten, anstatt alle abhängig von der Situation. Wenn zum Beispiel die ersten, dritten und vierten Textfelder wiederholt Werte enthalten, werden nur die dritten und vierten Textfelder angezeigt. Wenn aber die zweite Box denselben Wert wie die anderen 3 hat, sind alle Boxen bemalt. Ich würde gerne wissen, wie ich dieses Problem umgehen könnte. Danke im Voraus!Suchen Sie nach doppelten Werten in HTML-Eingabetextfeldern und malen Sie die Rahmen rot funktioniert nicht
Hier ist der JS-Code btw:
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;
}
und HTML-Code (für die Eingabefelder):
<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: Ich habe einige kleinere Verbesserungen an meinem JS-Code gemacht, aber es ist immer noch nicht ganz funktional. Es gibt immer noch Fälle, in denen Textfelder nicht gezeichnet werden, wenn sie wiederholt Werte enthalten.
Sie Vergleichen jedes Element in die eine, die unmittelbar folgt, aber das wird die korrekten Ergebnisse nur ergeben, wenn Sie zuerst * sortiert haben * das Array. Darüber hinaus sollten Sie in Ihrem anderen Fall nicht "duplicatesExist = false;" haben, da Sie im Wesentlichen nur zurückgeben, ob das * letzte * Element ein Duplikat ist oder nicht. Ich schlage vor, ähnliche Fragen wie ** [this one] (https://stackoverflow.com/questions/840781/easiest-way-to-find-duplicate-values-in-a-javascript-array) ** zu lesen ein Schub in die richtige Richtung. – Santi
Ich habe meinen ursprünglichen Beitrag aktualisiert. Ich habe immer noch Probleme damit. – user3647720
Hm, das stimmt - die Sortierstelle in Ihrem speziellen Fall ist möglicherweise nicht genau das, was Sie brauchen. Ich werde eine Antwort posten. – Santi