Eigentlich lief der Code ziemlich gut - nur ein paar Korrekturen und Anregungen, wie folgt:
Mit einem Submit-Button bedeutet, dass es ein Element einer Form sein sollte, obwohl man es außerhalb positionieren kann das Formular mit HTML5 mit dem Attribut "form".
Das nächste Stück Code scheint irrelevant, da es die einzige Zeile von jQuery ist und sich auf ein Element mit der ID "button" bezieht und die Sendeschaltfläche eine ID von "btnSendMail" hat aus:
//$('#button').addClass('myClass');
Der Name der Funktion, die die dynamische Übermittlungsschaltfläche erstellt, scheint einen Tippfehler zu enthalten. Wenn Sie diese Funktion in Ihrem Code ohne Tippfehler aufrufen, wird die Funktion nicht ausgeführt. Also, bis der Name klar ist, löschte ich den Namen vollständig und verwandelte ihn in eine anonyme Funktion.
Es ist nichts falsch daran, mit setAttribute() den Wert des onclick-Ereignisattributs festzulegen. Eine andere Möglichkeit ist die Verwendung von addEventListener(); beide funktionieren in Google Chrome einwandfrei, außer dass setAttribute() der schnellere der beiden ist; siehe here. Während Übergabeschaltflächen normalerweise zum Übermitteln von Formularen verwendet werden, gibt es einige Flexibilität, solange man ein "formaction" -Attribut bereitstellt, wenn man den Browser lieber zu einer URL umleitet, sogar eine JavaScript-URL funktioniert!
Schließlich, vorausgesetzt, Sie CSS-Code ohne Angabe, welche Klasse sie gehören sollte, so habe ich die Freiheit, es in Styling für die .btn Klasse drehen. Ich änderte auch den Code, so dass der Knopf mit meinem altmodischen Monitor nicht annähernd zu sehen war. Ich habe auch etwas Farbe hinzugefügt, um den Button zum Testen hervorzuheben.
function btnSendMail_Click() {
console.log('Button clicked; email sent');
}
(function() {
var button = document.createElement('input');
button.setAttribute('type', 'submit');
button.setAttribute('ID', 'btnSendMail');
button.setAttribute('value', 'Send Mail');
button.setAttribute('onclick', 'btnSendMail_Click()');
button.setAttribute('form', 'myform');
document.body.appendChild(button);
button.setAttribute("class", "btn btn-primary");
button.setAttribute("formaction", "javascript: console.log('bye');")
//$('#button').addClass('myClass');
}());
.btn {
margin-left: 207px;
width: 98px;
height: 48px;
background: red;
color: #fff;
}
<form id="myform">
</form>
Können Sie nicht auf eine Schaltfläche Server-Seite erstellen und dort Ereignis anhängen? Welche serverseitige Sprache verwenden Sie? – Morpheus
Fügen Sie nicht die Klasse 'myClass' dem falschen Element hinzu? Bei der Deklaration geben Sie die ID 'btnSendMail' an die Schaltfläche an, dann fügen Sie die letzte Klasse der' # Schaltfläche' hinzu. –
Sie müssen ein 'form' Element zu schaffen, in der Lage sein, etwas zu dem Server zu senden. Damit wir aushelfen können, brauchen wir ein _working_ Code-Snippet, nicht nur Codefragmente – LGSon