0

我手上有一个挠头。

我正在为客户建立一个网站。他们希望以重力形式保存他们的社交分享。所以我有一个初始表单,将数据传递到包含所有社交共享链接的确认页面。这是一个“投票选出最好的……”的场景,社交分享让你的候选人每人获得额外的一票。

我已经构建了第二种形式来存储社交共享,其中两个字段保存候选人数据(通过初始投票的查询传递)和他们共享的网络。

整个表单是隐藏字段(无需用户输入),并在用户单击特定网络的共享按钮时提交。

我的问题是:当重力表单提交时,它要么从页面中删除表单并用确认文本块替换它,要么刷新页面(完全阻止共享),或者完全重定向到新的 url(再次阻止股份)。

我尝试了另一种将每个网络保存到自己单独表单的替代方法(因此一个表单提交不会阻止其他表单),但是表单提交会删除所有表单,而不仅仅是它自己的表单,显然。

底线是这样的:我需要一种方法在同一页面上静默提交同一 GF 表单的多个实例,而不重定向用户,同时还存储他们一次且仅一次共享每个链接的功劳。

编码

//social share links
<a id="fb" class="share-link" href="javascript:void(0)" 
onclick="javascript:genericSocialShare('http://www.facebook.com/sharer.php?u=http://www.oneupthevote.org', 'facebook')">
[icon name="facebook" class="" unprefixed_class=""] SHARE ON FACEBOOK</a>

<a id="tw" class="share-link" href="javascript:void(0)"
 onclick="javascript:genericSocialShare('http://twitter.com/share?text=One Up The Vote&url=http://www.oneupthevote.org', 'twitter')">
[icon name="twitter" class="" unprefixed_class=""] SHARE ON TWITTER</a>

<a id="li" class="share-link" href="javascript:void(0)"
 onclick="javascript:genericSocialShare('http://www.linkedin.com/shareArticle?mini=true&url=http://www.oneupthevote.org', 'linkedIn')">
[icon name="linkedin" class="" unprefixed_class=""] SHARE ON LINKEDIN</a>

<script>
    // pushes share function and sends social network here for form storage
    function genericSocialShare(url, ref) {
    window.open(url,'sharer','toolbar=0,status=0,width=648,height=395');

    //Pull vote from url query string
    var urlParams = new URLSearchParams(window.location.search);
    var vote = urlParams.get("vote");

    //select form by network, insert value and force form submission
    if(ref == "facebook") {
        document.getElementById("input_2_1").value = vote;
        document.getElementById("gform_submit_button_2").click();
    } else if(ref == "twitter") {
        document.getElementById("input_3_1").value = vote;
        document.getElementById("gform_submit_button_3").click();
    } else {
        document.getElementById("input_4_1").value = vote;
        document.getElementById("gform_submit_button_4").click();
    }
}
</script>

//hidden gravity forms...forms
[gravityform id="2" title="false" description="false" ajax="true"]
[gravityform id="3" title="false" description="false" ajax="true"]
[gravityform id="4" title="false" description="false" ajax="true"]

有什么建议么?如果我能提供更多见解,请告诉我。这些是奇怪的要求,我明白了。

4

0 回答 0