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">
2016年10月31日更新
解决方法
嗯,这很有趣.该脚本有效.但是,它的编写方式和它与主form2.js一起工作的方式.Marko脚本让我相信它不起作用.
这是因为Javascript“showErrorMessage”仅在使用完整表单的“提交”按钮激发表单验证时才显示文本警告“必须是企业电子邮件”,并且只有在#Email下面的几个必填字段中输入文本时才显示领域.
所以这个脚本不仅仅是错误检查#Email字段;这就是我的假设.即使我碰巧在测试中的#Email下面的一个必填字段中添加了文本,它也不会抛出showErrorMessage.
表格验证仅在1)填写所有必填字段时有效(在所有这些字段之后还有一个非必填字段,当然,由于不需要,因此未经验证)2)尝试提交在对#Email进行检查之前.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。