我有一个确认ToS的复选框。 Befor用户不选中此复选框并确认ToS,PayPal按钮覆盖有50%透明层,无法按下。与另一个PayPal按钮,查看卡等相同。如果用户试图按下任何PayPal按钮而不选中复选框,他会收到JS警报,他必须检查并确认ToS。
我的问题是,如果用户重新加载页面或转到另一个页面,复选框会忘记其检查状态,因此他必须选中每个页面上的复选框,这很难过。
这是代码,HTML和JS,它们使复选框,覆盖和警报推送。代码在Joomla框架内部工作,并与Joomla的组件K2 JQuery一起使用: HTML
<p class="toskorb">Please check the checkbox and confirm our ToS!<input class="checkbox" name="TOS" id="TOS" value="read" type="Checkbox" /><img src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_paynowCC_LG.gif">
JS
var $K2 = jQuery.noConflict();
$K2(document).ready(function(){
//$K2('#TOS').attr('checked', false);
//$K2('input[type=image]').attr("class", "agbunchecked");
//$K2('input[type=image]').bind("click", giveAllert);
if(!$K2('#TOS').attr('checked')) //
{
$K2('input[type=image]').attr("class", "agbunchecked");
$K2('input[type=image]').bind("click", giveAllert);
}
function giveAllert()
{
alert("Please check the checkbox and confirm our ToS!");
return false;
}
$K2('#TOS').change(function(event){
if(this.checked)
{
$K2('input[type=image]').attr("class", "agbchecked");
$K2('input[type=image]').unbind("click");
}
else
{
$K2('input[type=image]').attr("class", "agbunchecked");
$K2('input[type=image]').bind("click", giveAllert)
}
});
});
如果有人知道这些东西可以完成此代码以保留复选框一旦检查在所有页面上检查,那就太棒了。 感谢您提供正确方向的代码片段,完成和建议
PS:对不起,我之前没有说过:如果可能的话,我正在寻找一个有会话而不是cookie的解决方案。在最后一个欧盟cookie法之后,越来越多的人拒绝cookie :(PPS:此代码会在页面刷新时记住复选框已检查状态并返回&lt; - &gt;正向浏览:
<?php
$a = array("ToS_yes");
foreach($a as $key => $value)
{
echo "<input type='checkbox' name='rating[]' value='$value'"; if(in_array($value,$_POST['rating'])) echo " checked "; echo ">$value";
}
&GT?; 但是如何记住其他页面上的状态呢?这就是诀窍
答案 0 :(得分:1)
使用cookie:
$.cookie("tos", true); // set the cookie to true (once the tos is clicked).
然后在每个页面上检索cookie,如果是,则自动选中该框。
jQuery版本1.6
及以上:
var tos = $.cookie("tos");
if (tos) {
$('myCheckbox').prop('checked', true);
}
低于1.6
的jQuery版本必须使用.attr()
:
var tos = $.cookie("tos");
if (tos) {
$('myCheckbox').attr('checked', true)
}