2016-06-22 23 views
0

Ich habe dynamisch eine Schaltfläche in meiner Javascript-Funktion erstellt und eine andere Funktion onclick aufgerufen, wie unten gezeigt.Dynamisch erstellte Formular namens via onclick verschwindet sofort Javascript

streambtn = document.createElement("button"); 
streambtn.setAttribute("onclick","createattribute()"); 

Die Create() Methode eröffnet eine Unterteilung innerhalb der dynamisch erzeugten Form und diese Funktion ist wie folgt.

function createattribute() { 

     inputval.innerHTML = "Provide a Stream name and click to add attribute-type pairs to yours stream."; 
     var input = document.createElement("input"); 
     input.type = "text"; 
     input.placeholder="Attribute name"; 
     input.id="attr"+attrID; 
     input.className = "attr-textfield-style"; 
     inputval.appendChild(input); 

     //Display the drop down menu 

     var newDiv=document.createElement('div'); 
     var html = '<select>', attrtypes = typeGenerate(), i; 
     for(i = 0; i < attrtypes.length; i++) { 
      html += "<option value='"+attrtypes[i]+"'>"+attrtypes[i]+"</option>"; 
     } 
     html += '</select>'; 
     newDiv.className="attr-combobox-style"; 
     newDiv.id="type"+attrID; 
     newDiv.innerHTML= html; 
     inputval.appendChild(newDiv); 
     attrID++; 

     alert("attrname id: "+input.id+" attrtype id: "+ newDiv.id); 
    } 

Die inputval ist eine Abteilung innerhalb der dynamisch erzeugten Formular, in dem die neu erstellten Formelemente aus der Create() Funktion wird angehängt. Aber das Problem, mit dem ich gerade konfrontiert bin, ist, dass, obwohl die Methode korrekt aufgerufen wird, die Form (dynamisch erzeugte Form) sofort nach dem Klicken auf streambtn in Sekundenbruchteilen verschwindet. Nach dem Klicken wird die erste Zeile "Geben Sie einen Stream-Namen an und klicken Sie hier, um Attribut-Typ-Paare zu Ihrem Stream hinzuzufügen." im Nu und verschwindet. Gibt es eine Möglichkeit, es auf dem Bildschirm zu halten und es dann zu verbergen, abhängig von irgendwelchen Bedingungen (wie nachdem der Benutzer die Daten eingegeben hat, die dem neu geöffneten Formular entsprechen -> erstellt über die Methode createattribute())?

Antwort

1

hinzufügen type = "button" als <button> ohne type = "button" als Submit-Button handeln und über click des submit buttopn wird Seite entladen werden.

streambtn = document.createElement("button"); 
streambtn.type = 'button'; 
streambtn.setAttribute("onclick","createattribute()"); 
+0

Danke eine Million. Das hat funktioniert. Obwohl ich herausfand, dass das Formular auf Knopfdruck gesendet wurde, hatte ich keine Ahnung, dass ich den Typ separat deklarieren musste, da er in der createElement ("button") Zeile angegeben wurde. –

+0

@NayantaraWilfred Auch wenn es sich um ein Button-Tag handelt, sollten Sie den Typ definieren, um die Formularübergabe bei Klickereignissen zu verhindern ... – Rayon