首页 > 解决方案 > 在脚本中检测并设置 id 和表单名称

问题描述

我有一个表单,非技术用户可以更新表单字段和表单名称,然后在登录页面上自动更新。

我使用的附加功能在需要表单名称的隐藏字段中设置 utm 参数,并且我还将表单 URL 推送到使用字段 ID 的隐藏字段上。

我想让 HTML 表单名称在页面加载时自动设置,即使它已更改,并且字段 ID 从不会更改的表单字段名称中设置。

以下隐藏字段用于此目的:

<input type="hidden" name="FormURL" id="fe580" value="">

我想在脚本 eblow 中根据名称 - FormURL 获取 id - fe580 集,因为 HTML 名称不会 cvhange,但 id 可以取决于此隐藏字段所在的顺序。

<script>
  var input = document.getElementById("fe580"); input.value = location.href;
</script>

使用表单名称,我想让它根据表单名称在页面加载时自动设置,以防它发生变化。以下是可以更改的表格名称。

下面是我用来设置 UTM 值的脚本。

<script type="text/javascript">

var defaultHiddenFieldNameValue = "NoData";
function getQueryStringParamValue(strQStrParam) {
var strURL = document.location.href;
var strQStrParamValue = "";
          if (strURL.indexOf('?') != -1)
          {
                      strQStrParamValue = strURL.substr(strURL.indexOf('?') + 1);
                      if (strQStrParamValue.indexOf(strQStrParam) != -1)
                      {
                                  strQStrParamValue = strQStrParamValue.substr(strQStrParamValue.indexOf(strQStrParam));
                                  strQStrParamValue = strQStrParamValue.substr(strQStrParamValue.indexOf('=') + 1);
                                  if (strQStrParamValue.indexOf('&') != -1)
                              strQStrParamValue = strQStrParamValue.substr(0, strQStrParamValue.indexOf('&'));
                              return strQStrParamValue;

                  }else{
                              strQStrParamValue = defaultHiddenFieldNameValue;
                              return strQStrParamValue;
                  }
      }else{
                  strQStrParamValue = defaultHiddenFieldNameValue;
                  return strQStrParamValue;
      }
}





var form = "SYSTEM_WEBFORM_WHITEPAPER";          //FORM NAME ON THIS LINE


function setCampaign(){
  var elqForm = document.forms[form];

  //repeat for each field to populate

elqForm.elements['utm_source'].value = getQueryStringParamValue('utm_source');
elqForm.elements['utm_medium'].value = getQueryStringParamValue('utm_medium');
elqForm.elements['utm_campaign'].value = getQueryStringParamValue('utm_campaign');
elqForm.elements['utm_content'].value = getQueryStringParamValue('utm_content');

    }

window.onload = setCampaign;

</script>  

在页面加载隐藏字段的 id 和表单名称都设置在正确的位置。

我无权访问表单代码,因为这是由营销人员可以在其中构建表单的平台生成的。

标签: javascriptforms

解决方案


推荐阅读