Javascript ist ein Rätsel für mich.Assertion auf anonyme Javascript-Funktion fehlgeschlagen
Warum bekomme ich "Assertion fehlgeschlagen auf anonyme Funktion" Fehler mit der folgenden Funktion?
Es scheint ziemlich einfach; Es überprüft das Vorhandensein einer Domäne in einem Textfeld in einem Marketo-Kontaktformular und erlaubt/erlaubt die Formularvalidierung.
Die Funktion sollte mit einem 3rd-Party-Skript (a Marketo externe Bibliothek) und der On-Page-Funktion
MktoForms2.loadForm("http://app-sjn.marketo.com", "023-GTK-123", 4567);
, die ein Kontakt-Formular zeigt arbeiten (was der Grund ‚ein JSFiddle ist gewonnen t Arbeit), also kann das schwierig sein, mit dem Code zu beheben, den ich hier zeigen kann.
Das Hauptskript ist um http://app-sjn.marketo.com/js/forms2/js/forms2.js Ich kann natürlich dort nichts ändern. Aber ist in der folgenden Funktion etwas offensichtlich? Oder wie interagiert es mit dem Hauptskript? Ist (function()
das Problem?
(function(){
var invalidDomains = ["@gmail.","@yahoo.","@hotmail.","@live.","@aol.","@outlook."];
MktoForms2.whenReady(function (form){
form.onValidate(function(){
var email = form.vals().Email;
if(email){
if(!isEmailGood(email)) {
form.submittable(false);
var emailElem = form.getFormElem().find("#Email");
form.showErrorMessage("Must be Business email.", emailElem);
}else{
form.submittable(true);
}
}
});
});
function isEmailGood(email) {
for(var i=0; i < invalidDomains.length; i++) {
var domain = invalidDomains[i];
if (email.indexOf(domain) != -1) {
return false;
}
}
return true;
}
})();
Und dies ist der HTML-Code, die Skript Ziele auf Dokument bereit:
<input style="width: 150px;"
class="mktoField mktoEmailField mktoHasWidth mktoRequired mktoValid" maxlength="255"
name="Email" id="Email" type="email">
aktualisieren 10/31/16
Die "Assertion ist fehlgeschlagen" Fehler ein canard zu sein scheint , nach Bergi, und jetzt denke ich, das Problem muss mit der obigen Funktion und wie es mit dem Hauptskript funktioniert.
Bitte zeigen Sie uns das Stacktrace der Ausnahme, es scheint nicht aus Ihrem Code zu kommen. – Bergi
Das macht Sinn; Ich habe Stach Trace in Firebug umgeschaltet und nichts zeigt. Muss ich dem obigen Skript console.trace() hinzufügen? – markratledge
Nein, 'console.trace' führt Sie nirgendwohin. Sie müssen den Ort finden, an dem die Behauptung gemacht wird. – Bergi