将几个Cookie的值插入隐藏的表单字段中

时间:2018-07-11 08:15:58

标签: javascript forms cookies

我有一个简单的表单,需要获取插入表单内hiddle字段(优惠券)中的cookie的值。

我有这样的表格:

<form action="/members/signup" class="am-signup-form" id="page-0" method="post" name="page-0">
<input id="_qf_page-0_next-0" name="_qf_page-0_next" type="submit" value="Get Access Now">
<input type="hidden" name="coupon" id="coupon-0" value="" />
</form>

我将它插入表格下面的javascript:

<script type="text/javascript">
(function(){
    var cookies;

    function readCookie(name,c,C,i){
        if(cookies){ return cookies[name]; }

        c = document.cookie.split('; ');
        cookies = {};

        for(i=c.length-1; i>=0; i--){
           C = c[i].split('=');
           cookies[C[0]] = C[1];
        }

        return cookies[name];
    }

    window.readCookie = readCookie; 
})();

$(document).ready(function(){
    //Get cookie you want.
    var referrer = window.readCookie('readCookie_mycookiename1') || ''; 
    //Set cookie value to hidden field.        
    $('#coupon').val(referrer);
});
</script>

我似乎无法正常使用表格/脚本。 cookie值未插入到隐藏字段的值中。

此外,我有3个不同的Cookie,需要将它们插入到隐藏字段的值中。可能不存在任何cookie,可能存在1个cookie或可能存在所有3个cookie(取决于网站访问者)。

如果所有三个cookie都存在,则需要将它们全部插入单个隐藏字段的值中(它们的外观并不重要)。有没有一种方法可以修改脚本,以便我可以从全部插入单个隐藏字段值的多个cookie中获取值?

1 个答案:

答案 0 :(得分:0)

您正在更改#coupon的值,该值不存在。您隐藏的输入的ID为coupon-0

关于获取0-3个cookie并将其放置在隐藏字段中:

function getCookies(...names) {
  const cookies = document.cookie.split('; ').reduce((cookieObj, cookie) => {
    const [name, value] = cookie.split('=');

    return {
      ...cookieObj,
      [name]: value,
    };
  }, {});

  return names.reduce((values, name) => {
    if (cookies[name]) {
      values.push(cookies[name]);
    }

    return values;
  }, []);
}

console.log(getCookies('_ga', 'cookie_that_doesnt_exist', '_gid'));

这将返回一个cookie值数组,该顺序将由您传递的名称的顺序确定。如果cookie名称不存在,则将其跳过。只需加入数组即可设置输入值。