1

ユーザーがフォームを終了しないことにした場合に備えて、フォームの値を Cookie に保存するフォームがあります。これは、これまでのところ、Cookieを作成してCookieを読み取るために持っているものです

function createCookie(name,value,days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
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]).val(controlValue);
}
}

jQuery('.rsform-button').click(function() {   
    var cookie = readCookie('storyCookie');     
    if(cookie === null){
        createCookie('storyCookie',JSON.stringify(jQuery('#userForm').serializeArray()),365);
    } 
    else{
        string2form(jQuery('#userForm'), cookie);
    }
});

私がやろうとしているのは、Cookie が存在するかどうか、および Cookie の値をフォームに再入力するかどうかを確認することです。クッキーはこのようにフォーマットされています

[{"name":"form[story description]","value":"input value 1"},{"name":"form[star]","value":"input value 2"},{"name":"form[supporting characters]","value":"input value 3"},{"name":"form[capture your thoughts]","value":""},{"name":"form[timelines]","value":""},{"name":"form[how many settings]","value":""},{"name":"form[specific event]","value":""},{"name":"form[opportunity for growth]","value":""},{"name":"form[lessons learned]","value":""},{"name":"form[recurring themes]","value":""},{"name":"form[things done differently]","value":""},{"name":"MAX_FILE_SIZE","value":"0000"},{"name":"form[todays date]","value":""},{"name":"form[name]","value":""},{"name":"form[title]","value":""},{"name":"form[address]","value":""},{"name":"form[city]","value":""},{"name":"form[state]","value":""},{"name":"form[zip]","value":""},{"name":"form[telephone]","value":""},{"name":"form[email]","value":""},{"name":"form[signature]","value":""},{"name":"form[captcha]","value":""},{"name":"form[formId]","value":"4"}] 

これを分割して、フォーム フィールドの名前とそのフィールドの値だけを取得し、キー ペアを使用してフォームを再入力する方法を知りたいです。わかりました、この方向に向けてくれた@Barmarに感謝します。さて、この投稿jQuery Storage and retrieve form state (with data)から取得したこのコードを使用してフォームを再作成することはできません。これを機能させようとして頭を壁にぶつけてきましたが、まだ運がありません。私はしばらくコーディングをしていないので、さびています。

4

1 に答える 1