Javascript для меня загадка.
Почему я получаю сообщение об ошибке «Ошибка утверждения анонимной функции» с функцией, указанной ниже?
Это кажется довольно простым; он проверяет наличие домена в текстовом поле контактной формы Marketo и разрешает/запрещает проверку формы.
Предполагается, что функция работает со сторонним скриптом (внешняя библиотека Marketo) и функцией на странице.
MktoForms2.loadForm("http://app-sjn.marketo.com", "023-GTK-123", 4567);
который показывает контактную форму (по этой причине JSFiddle не будет работать), поэтому это может быть трудно исправить с помощью кода, который я могу показать здесь.
Основной скрипт находится по адресу http://app-sjn.marketo.com/js/forms2/js/forms2.js Я, очевидно, ничего не могу там изменить. Но есть ли что-то очевидное в приведенной ниже функции? Или как он взаимодействует с основным скриптом? Проблема в (function ()
?
(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;
}
})();
А это HTML, на который скрипт нацеливается при готовности документа:
<input style="width: 150px;"
class="mktoField mktoEmailField mktoHasWidth mktoRequired mktoValid" maxlength="255"
name="Email" id="Email" type="email">
Обновление от 31.10.16
По словам Берги, ошибка «Утверждение не удалось» кажется уткой, и теперь я предполагаю, что проблема должна быть в функции выше и в том, как она работает с основным скриптом.
console.trace
никуда вас не приведет. Вам нужно найти место, где делается утверждение. - person Bergi   schedule 29.10.2016assert
не проверяет вашу функцию, а скорее является своего рода совместимостью с браузером. Исключение не перехвачено или вы просто столкнулись с ним во время отладки? Что именно меняется, когда вы не выполняете свой скрипт? - person Bergi   schedule 29.10.2016