【问题标题】:setting cookies for checkboxes为复选框设置 cookie
【发布时间】:2012-05-18 02:07:12
【问题描述】:

这是我正在尝试为表单中的复选框设置 cookie 的功能

function setCookie(c_name,value,exdays){    
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ?
        "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function set_check(){
    var proceed = document.forms['form1']['proceed_opt[]'].checked;
    setCookie(proceed_opt[], proceed, 60*60*1);
    alert(proceed_opt[]);
}

我的表单中的复选框是这样的..

        <input type="checkbox" name="proceed_opt[]" value="I will upload new Image" onChange="set_check()";>
          Insert Option &quot;I will upload new Image&quot;
    </td>
</tr>
<tr>
    <td></td>
    <td colspan="2">
            &nbsp; 
          <input type="checkbox" name="proceed_opt[]" value="I approve this sample for a Night Light" onChange="set_check()";>
          Insert Option &quot;<font face="Arial, Helvetica, sans-serif" size="2">I approve this sample for a Night Light</font>&quot; 
    </td>
</tr>
<tr>
    <td></td>
    <td colspan="2">
            &nbsp; 
          <input type="checkbox" name="proceed_opt[]" value="Select One" onChange="set_check()";>
          Insert Option &quot;<font face="Arial, Helvetica, sans-serif" size="2">Select One</font>&quot; 
    </td>
</tr>     
<tr>
    <td></td>
    <td colspan='2'>
         &nbsp;
        <input type="checkbox" name="proceed_opt[]" value="other" onChange="set_check()">
          Insert Option &quot;Other See comments&quot;
    </td>
</tr>

但是这里没有设置cookies...谁能告诉我如何为表单中的复选框设置cookies...

【问题讨论】:

    标签: php javascript cookies forms


    【解决方案1】:

    您的代码存在一些问题。我稍微清理了一下,并做了一些假设。基本上,你把事情复杂化了。

    您错误地引用了这些字段,并且出现了错误。这种方法更简单(虽然仍然不是理想的 - 但它有效)。

    小提琴:http://jsfiddle.net/mAnUQ/

    HTML:

    <form name="form1">
    <div>
    <input type="checkbox" id="check1" name="proceed_opt[]" value="I will upload new Image" onChange="set_check(this)">
            <label for="check1">I will upload new Image</label>
        </div>
    <div>
              <input type="checkbox" id="check2" name="proceed_opt[]" value="I approve this sample for a Night Light" onChange="set_check(this)">
        <label for="check2">I approve this sample for a Night Light</label>
        </div>
    <div>              
              <input type="checkbox" id="check3" name="proceed_opt[]" value="Select One" onChange="set_check(this)">
        <label for="check3">Select One</label>
        </div>
        <div>
            <input type="checkbox" id="check4" name="proceed_opt[]" value="other" onChange="set_check(this)">
            <label for="check4">Other See comments</label>
        </div>
    </form>
    

    JavaScript:

    function setCookie(c_name,value,exdays){    
        var exdate=new Date();
        exdate.setDate(exdate.getDate() + exdays);
        var c_value=escape(value) + ((exdays==null) ?
            "" : "; expires="+exdate.toUTCString());
        document.cookie=c_name + "=" + c_value;
    }
    
    function set_check(me){
        setCookie(me.value, me.checked, 60*60*1);
        console.log(me.value);
        console.log(me.checked);
        console.log(document.cookie)
    }
    

    【讨论】:

    • 我已经测试并确认这是在设置 cookie。请解释这如何无法解决您的问题,因为如果这不是您所需要的,那么我认为我的理解不够好,无法帮助您。
    • no dude...我也对此进行了测试...在我检查了一个复选框并在页面上重新加载后,已经检查过的复选框应该存在于页面本身但现在它是不这样做..
    • 我认为您混淆了 cookie 的功能。 cookie 只是存储数据,在这种情况下已完成。然后,如果您想使用该数据预先选择字段,您还需要编写代码来执行此操作。它不会自动保存复选框的状态。
    • 是的,你绝对正确...刚刚观察到 cookie 已设置...但是一旦页面重新加载,我怎样才能将 cookie 值放入表单中......正如你所说的那样- 诸如预先选择字段之类的东西..你能告诉我如何为该功能编写代码..
    • 对不起,我现在要睡觉了,但明天我会尽力给你弄点东西。首先将 cookie 拆分为名称/值对 var cookies = document.cookie.split(/;/);,然后使用这些值与每个复选框进行比较。
    【解决方案2】:

    看看这是否能引导你走向正确的方向。这会使用复选框的值设置名为“proceed_opt”的 cookie。

    HTML:

    <form name="form1"><table><tr><td></td><td>&nbsp; <input type="checkbox" name="proceed_opt[]" value="I will upload new Image" onclick="if(this.checked){set_check(this);}">
          Insert Option &quot;I will upload new Image&quot;</td></tr>
    <tr><td></td><td colspan="2">
            &nbsp; 
          <input type="checkbox" name="proceed_opt[]" value="I approve this sample for a Night Light" onclick="if(this.checked){set_check(this);}">
          Insert Option &quot;<font face="Arial, Helvetica, sans-serif" size="2">I approve this sample for a Night Light</font>&quot; </td></tr><tr><td></td><td colspan="2">
            &nbsp; 
          <input type="checkbox" name="proceed_opt[]" value="Select One" onclick="if(this.checked){set_check(this);}">
          Insert Option &quot;<font face="Arial, Helvetica, sans-serif" size="2">Select One</font>&quot; </td></tr>     
     <tr><td></td><td colspan='2'> &nbsp;
     <input type="checkbox" name="proceed_opt[]" value="other" onclick="if(this.checked){set_check(this);}">
         Insert Option &quot;Other See comments&quot;</td></tr>?</table></form>
    

    JAVASCRIPT:

    function setCookie(c_name,value,exdays)
    {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
    }
    
    function set_check(proceed){
    
    var proceed_opt = proceed.value;
    setCookie("proceed_opt", proceed_opt, 60*60*1);
    alert (proceed_opt);
    }
    

    【讨论】:

    • @abc123 请参阅上面的修改后的帖子。
    • 警告框正在工作,伙计...但是当我刷新页面时,cookie没有设置在那里,选定的复选框不存在...做什么???
    猜你喜欢
    • 2016-02-17
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2013-07-10
    相关资源
    最近更新 更多