Javascript 检查marketo表单中的文本字段以获取可接受的URL';s

Javascript 检查marketo表单中的文本字段以获取可接受的URL';s,javascript,forms,marketo,Javascript,Forms,Marketo,我有一个Marketo表单,其中有一个字段名为sharedURL。我将其设置为文本字段,因为URL字段限制性太强,因为您可能会选择guest,这是一个允许用户输入URL的字段。在转到定义的登录页之前,该字段应仅接受某些域。让我们假设唯一可接受的域是www.marketo.com等(域的所有变体)。我在各种外部网站和marketo网站上查看了多个建议的解决方案,但无法调整代码以满足我的需求。这就是我得到的(插入到引导登录页模板的HTML中)我的表单和字段详细信息(如果需要)。我的解决方案不起作用。

我有一个Marketo表单,其中有一个字段名为sharedURL。我将其设置为文本字段,因为URL字段限制性太强,因为您可能会选择guest,这是一个允许用户输入URL的字段。在转到定义的登录页之前,该字段应仅接受某些域。让我们假设唯一可接受的域是www.marketo.com等(域的所有变体)。我在各种外部网站和marketo网站上查看了多个建议的解决方案,但无法调整代码以满足我的需求。这就是我得到的(插入到引导登录页模板的HTML中)我的表单和字段详细信息(如果需要)。我的解决方案不起作用。。。感谢您的帮助

“Id”:6466,“名称”:“sharedURL”,“数据类型”:“字符串”,“最大长度”:512,”

(函数(){
//只能使用的域
var有效电源=[
'https://info.marketo.com',
'https://www.marketo.com',
'http://www.marketo.com',
“info.marketo.com”,
“www.marketo.com”,
],
MktoForms2.whenReady(函数(形式){
onValidate(函数(){
var url=form.vals().sharedull;
如果(url){
如果(!isurlGood(url)){
表格。可提交(假);
var urleem=form.getFormElem().find(“#sharedull”);
form.Message(“您必须使用经批准的域。”,urleem);
}否则{
表格。可提交(真实);
}
}
});
});
函数isurlGood(url){
对于(变量i=0;i
如果您的代码格式正确,则更容易识别错误。我已经为您设置了格式,但您应该养成经常编写格式代码的习惯。谢谢Mike,感谢您的努力!我怀疑您在从表单捕获url时遇到了问题。
(function() {
  // Domains that can only be used
  var validDomains = [
      'https://info.marketo.com',
      'https://www.marketo.com',
      'http://www.marketo.com',
      'info.marketo.com',
      'www.marketo.com',
    ],
    MktoForms2.whenReady(function(form) {
      form.onValidate(function() {
        var url = form.vals().sharedURL;
        if (url) {
          if (!isurlGood(url)) {
            form.submitable(false);
            var urlElem = form.getFormElem().find("#sharedURL");
            form.showErrorMessage("You must use an approved Domain.", urlElem);
          } else {
            form.submitable(true);
          }
        }
      });
    });

  function isurlGood(url) {
    for (var i = 0; i < validDomains.length; i++) {
      var domain = validDomains[i];
      if (url.indexOf(domain) != -1) {
        return false;
      }
    }
    return true;
  }
})();