2016-10-06 5 views
0

Ich versuche jedes Mal neue "Studenten" -Objekte zu erstellen, wenn ein Benutzer Benutzer-ID, Vorname, Nachname und eine Schaltfläche eingibt. Ich glaube, ich habe es bis hierher geschafft, aber ich versuche sicherzustellen, dass mehrere Studenten mit derselben ID nicht hinzugefügt werden können. Ich dachte, dass das Durchschleifen mit zwei verschiedenen Variablen der beste Weg ist, um potenzielle Duplikate zu isolieren, aber die einzige Zeit, zu der ich meine Warnmeldung sehe, ist, wenn es tatsächlich keine Duplikate gibt. Kann mir jemand damit in die richtige Richtung gehen?Validierung von Benutzereingaben zur Vermeidung doppelter IDs

Heres mein Code:

<form> 
ID Number:<br> 
<input type="text" id="idNumber"> 
<br> 
First name:<br> 
<input type="text" name="firstName" id="fName"> 
<br> 
Last name:<br> 
<input type="text" name="lastName" id="lName"> 
</form> 
<br> 
<button type ="submit" onclick="myFunction(list)">Submit</button> 
<div id = "container"> 
<ul id="list"></ul> 
</div> 

<script> 
function myFunction(list){ 

    var ids =[]; 
    var student = new Object(); 
    student.idNo = document.getElementById("idNumber").value; 

    student.firstName = document.getElementById("fName").value; 
    student.lastName = document.getElementById("lName").value; 

    for(var i = 0; i < 10; i++){ 
     for(var j = 1; j < 10 ; i++){ 
     ids.push(student.idNo); 
     if(ids[i] == ids[j]){ 
     alert("Id already exists"); 
     } 
     } 
    } 

    var text = " "+student.idNo+" "+student.firstName+" "+student.lastName; 

    var li = document.createElement("li"); 
    li.addEventListener("mouseover", mouseOver, false); 
    //li.addEventListener("click", mouseClick, false); 
    var node = document.createTextNode(text); 
    li.appendChild(node); 
    document.getElementById("list").appendChild(li); 
} 


</script> 
+0

Sie initialisieren ids-Array jedes Mal, wenn Sie die Methode aufrufen. Was ist die Liste, die Sie in Funktion übergeben? – Majid

Antwort

2

Hier ist ein Arbeits Schnipsel. Ihre ìds wurde immer leeres Array gesetzt, weil es in Ihrer Funktion

var ids = []; 
 

 
    function myFunction(list) { 
 
    var student = new Object(); 
 
    student.idNo = document.getElementById("idNumber").value; 
 
    student.firstName = document.getElementById("fName").value; 
 
    student.lastName = document.getElementById("lName").value; 
 

 
    if (ids.indexOf(student.idNo) == -1) { 
 
     
 
     ids.push(student.idNo); 
 
     var text = " " + student.idNo + " " + student.firstName + " " + student.lastName; 
 
     var li = document.createElement("li"); 
 
     var node = document.createTextNode(text); 
 
     li.appendChild(node); 
 
     document.getElementById("list").appendChild(li); 
 
     
 
    } else { 
 
     
 
     alert("Duplicated ID"); 
 
     
 
    } 
 

 

 
    }
<form> 
 
    ID Number: 
 
    <br> 
 
    <input type="text" id="idNumber"> 
 
    <br>First name: 
 
    <br> 
 
    <input type="text" name="firstName" id="fName"> 
 
    <br>Last name: 
 
    <br> 
 
    <input type="text" name="lastName" id="lName"> 
 
</form> 
 
<br> 
 
<button type="submit" onclick="myFunction(list)">Submit</button> 
 
<div id="container"> 
 
    <ul id="list"></ul> 
 
</div>

war
+1

Prost. Nicht sicher, wie ich es geschafft habe zu verpassen, dass ich das Array innerhalb der Funktion erklärte .. Vielen Dank für Ihre Hilfe –

Verwandte Themen