我有一个简单的表单,需要获取插入表单内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中获取值?
答案 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名称不存在,则将其跳过。只需加入数组即可设置输入值。