jquery Squarespace唯一标识符解决方案不再工作,由于形式的变化,需要帮助来确定为什么它不能工作/解决方案

yc0p9oo0  于 2023-06-22  发布在  jQuery
关注(0)|答案(1)|浏览(133)

SS=正方形空间
以前,Ian_A在SS论坛上发布了一个脚本,用于在提交的表单上添加唯一标识符,以防止gmail中的电子邮件整理。这使我们能够通过点击回复来回复每个收到的表单,而无需将默认的gmail框更改为对话视图等。
我们无法更改Gmail设置。(无法在不疏远某些用户的情况下打开对话视图)
SS已经改变了表单的工作方式,我相信脚本的$参数不再针对字段的正确部分。我没有编码背景,我有限的理解是$是jquery选择字段的方式。我不知道如何构造jquery选择器来选择我想要的字段,也许是类ID,它对表单上的每个字段都是唯一的。
只有一种形式可以让它工作。我只能访问头代码注入和自定义CSS。我需要通过表格发送的每封电子邮件都有随机化受试者(或时间/日期戳)
下面是在SS更新站点之前工作的代码示例。

<script>
$(document).ready(function(){ 
    var timecode = Date.now();
    var subjecttxt = "#" + timecode;
  
  $('form').find("input[type=text], text").each(function()
  {
      if(!$(this).val()) { 
     $(this).attr("value", subjecttxt);
     $(this).attr("readonly", true);
     $(this).css("display","none");
        var val = subjecttxt;
        return ( val !== subjecttxt );
  }
  });
});

  $(document).ready(function(){ 
$('form').find("label[class=title]").each(function()
  {
      if(!$(this).val()) { 
     $(this).css("display","none");
        var val2 = "none";
        return ( val2 !== "none" );
  }
  });
});  
 </script>

Source= SS Forum Post我们的网站联系我们page= Form in question
下面是我可以看到的与空白主题文本框相关的信息,我既希望对用户隐藏,又希望在发送时使用唯一标识符自动填充,以便我们可以单独识别每个发送。我觉得jquery应该有一种方法让它选择这个,而不是表单上的第一个字段不再工作,但我不知道如何更改上面的代码,使其工作,尽管测试无法看到为什么它不工作(没有错误抛出页面加载,我不知道如何检查)
例如:$('form ').find(input.text-dfd9bd71-70a1-413d-81f2-dae19bb38da2)
我知道这不起作用,但我不知道为什么它不起作用,我觉得它可以使用div id,或类,但idk如何使jquery做到这一点,文档是我目前的理解。

<div id="text-dfd9bd71-70a1-413d-81f2-dae19bb38da2" class="form-item field text">
                
            <label class="title" for="text-dfd9bd71-70a1-413d-81f2-dae19bb38da2-field">
              Subject
              
            </label>
          
                
                <input
                    class="field-element text"
                    type="text"
                    id="text-dfd9bd71-70a1-413d-81f2-dae19bb38da2-field"
                    
                    
                />
              </div>

我试图隐藏Squarespace联系人表单顶部的一个部分,并让jquery选择添加唯一标识符的框。
由于SS表格的更改,这不再按预期工作。

r9f1avp5

r9f1avp51#

不幸的是,问题是,对于新的Squarespace表单块,Squarespace现在密切管理每个字段中的值,并仅基于实际的用户输入事件(可能使用React,虚拟/影子DOM和isTrusted事件属性)持久地维护它们。这意味着,尽管您可以使用JavaScript设置字段值,但这样做不会对Squarespace最终提交的值产生影响。Squarespace将在用户的每个操作(键入另一个字段、提交表单等)之后相应地重置表单字段值。
因此,我不认为这可以用JavaScript来解决。不过,它可能适用于较旧的、未编辑的表单块。
除了使用第三方表单服务(Google Forms,JotForm等)之外,还有一种替代方案:强制“主题”字段显示为“名称”字段。您可以通过执行以下操作来实现此目的:
1.从表单中删除“名称”字段。
1.确保“主题”字段是表单中的第一个字段。
1.将以下内容添加到特定于页面的头注入:

<style>
.form-item:first-child span {
  font-size: 0;
}
.form-item:first-child span:after {
  content: "Name (required)";
  font-size: 18px;
}
</style>

现在,“主题”字段将显示为标题为“名称”,并且将只是一个字段(而不是两个,第一个和最后一个)。当提交通过时,电子邮件主题将类似于:“表单提交-联系人- John Smith”。但在邮件正文中,您会看到“主题:约翰·史密斯。这是因为我们只是用CSS使第一个字段显示为“Name”。
确保将“主题”字段设置为必填字段。并删除可能已添加以设置“Subject”值的其他脚本。
当然,如果两个人输入相同的名字,这些电子邮件可能会被整理。
另外,考虑错误消息(例如,如果用户将第一个字段留空并尝试提交表单)可能会让用户感到有点困惑。
这是一个有点愚蠢的变通办法。但如果你真正关心的是电子邮件的主题行,它可能对你有用。

相关问题