记住页面重新加载后的.attr状态

时间:2012-01-26 13:03:22

标签: jquery state attr checked

我的表单中有一些复选框:通过选中一个,您可以禁用另一个复选框。以下代码非常有效。问题是当用户在提交后收到错误(当页面重新加载时),再次启用禁用的复选框。但我希望它能够保持其残疾状态。

<label for="Q09_01">
  <input class="Q09" name="Q09[]" id="Q09_01"  type="checkbox" />
aaa</label>
<label for="Q09_02">
  <input class="Q09" name="Q09[]" id="Q09_02"  type="checkbox" value="Q09_02" />
bbb</label>
<label for="Q09_03">
  <input class="Q09" name="Q09[]" id="Q09_03"  type="checkbox" value="Q09_03" />
ccc </label>
<label for="Q09_04">
  <input class="Q09" name="Q09[]" id="Q09_04"  type="checkbox" value="Q09_04" />
ddd </label>       

jQuery的:

$(function(){

$('#Q09_01').click(function() {
$('#Q09_03').attr('disabled', this.checked);
});
$('#Q09_03').click(function() {
$('#Q09_01').attr('disabled', this.checked);
});

})     

除了这个特定的问题,我还有另一个与单选按钮(maintain the state of a radio-toggled div after page reload)类似的问题,并在页面重新加载时保持显示/隐藏/切换状态。是否有一些jQuery函数会在页面重新加载后记住所有这些状态?你觉得这个http://www.jasonsebring.com/dumbFormState能帮助我实现目标吗?我是jquery的新手,我会感谢任何帮助或暗示或良好实践的例子。

3 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。您可以通过检查POST输入并匹配它来在服务器端脚本中处理此问题。基本上,检查变量是否已定义(或具有值),如果未定义,则禁用该框。在你的情况下,实际上,你正在检查实际提交的值,所以这实际上只是遵循你的jQuery逻辑。一些原始的PHP例如:

$disable_Q09_01 = $_POST['Q09'] == "Q09_03"

<input class="Q09" name="Q09[]" id="Q09_01"  type="checkbox" 
  <? if ($disable_Q09_01) echo "disabled"; ?>
 />

原谅我,自PHP以来已经有一段时间了,我只是觉得它比给Rails代码更常见。

另一种方法是在提交表单之前创建一个cookie。 W3记录了所有这些here。基本上设置"disable_Q09_01=true"的cookie,然后根据应用程序读取或清除它。我相信这种方法不太合乎需要,因为用户可能关闭了cookie,但无论你使用什么服务器端脚本,这都会起作用(ish)。

答案 1 :(得分:0)

您是否尝试使用本地或会话存储来存储输入的状态? 然后,如果存在会话或本地存储,则可以在页面加载时加载输入状态。

这可以使用javascript / jquery

完成

它不会解决任何服务器代码或cookie

试试这个以获取更多信息

http://www.beakkon.com/tutorial/html5/web-storage

@ atmd83

答案 2 :(得分:0)

您不能使用jQuery来记住页面状态。刷新页面时,将重新发送HTML,将其默认为原始状态。如果您愿意使用服务器端语言(如PHP),那么情况就不一定如此。但正如您在评论中所说,您不想使用PHP。

因此,您有两种选择:

  1. 缓存
  2. HTML5网络存储
  3. 所有浏览器都不支持

    #2,因此我建议使用#1。实质上,当用户检查框时,会创建/更新cookie。然后在页面重新加载时,在文档准备好后($(document).ready(..)),您将使用JavaScript来读取cookie并对DOM进行必要的更改(即检查正确的框)。

    Here's a commonly used jQuery cookie plugin.

    如果您在创建/更新/阅读Cookie时遇到问题,您应该专门发布一个新问题。

相关问题