我有一个joomla网站,我使用rsform组件来创建一个多页面的表单。我在提交表单之前保存cookie中的所有输入字段值,以防用户决定无法填写表单。因此,如果用户返回,我有一个函数,它将获取cookie并循环遍历表单,并使用存储在cookie中的值填充表单字段。我可以创建和阅读cookie,但我无法重新填充表单。这是流程。
但是我注意到,在我深入了解三个表单视图之前,cookie没有填充值。例如,如果我填写前两个textareas并单击下一个按钮以转到下一个表单视图,在控制台中我会看到cookie密钥对,但值为空。但是如果我填写下一个textarea并单击下一个按钮,我可以看到控制台中前两个textareas的值,但不是我刚刚填写的textarea的值。我希望你们能理解我想说的话。我已经在这几个星期了,我无法弄清楚所以任何帮助都非常感谢。以下是表格http://hearwithyourheartusa.com/index.php/share-your-story的链接。可能更容易看到我想说的是什么,而不是试图理解我刚输入的内容。
修改 这是我用来设置和获取cookie的代码以及应该用ccokie的值填充表单的代码。我也有一个jsfiddle,但它拒绝设置cookie,但如果你想给它一个镜头,这里是链接http://jsfiddle.net/Uqj4x/
function createCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)===' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function string2form($form, serializedStr) {
var fields = JSON.parse(serializedStr);
for (var i = 0; i < fields.length; i++) {
var controlName = fields[i].name;
var controlValue = fields[i].value;
$form.find("[name='+ controlName +']").attr('value',controlValue);
//document.getElementsByName(controlName).value = controlValue;
//console.log('field name='+controlName+' field value='+controlValue);
}
console.log('form values are - '+JSON.stringify(jQuery('#userForm').serializeArray()));
var cookie = readCookie('storyCookie');
console.log('the cookie values are '+cookie);
}
jQuery('#userForm input:button').click(function() {
// jQuery.ajax({
// cache: false,
// type: 'POST',
// url: 'http://hearwithyourheartusa.com/templates/jsn_boot_pro/customPHP/ajaxcookie.php',
// data: JSON.stringify(jQuery('#userForm').serializeArray()),
// contentType:"application/json; charset=utf-8",
// dataType: 'json',
// success: function(data){
// alert(data);
// }
// });
console.log(id);
createCookie('storyCookie',JSON.stringify(jQuery('#userForm').serializeArray()),365);
var cookie = readCookie('storyCookie');
console.log('the cookie is '+cookie);
});
答案 0 :(得分:0)
我尝试填写表单,但它没有设置任何cookie。另外我找不到保存cookie的代码(它应该在rsfp_changePage中,对吗?)
无论如何,您是否在未来设置了Cookie到期时间?