【问题标题】:Checkbox not getting checked state before page reload页面重新加载之前复选框未处于选中状态
【发布时间】:2012-02-16 10:22:19
【问题描述】:

我的应用有一个场地和区域表,每个区域都有许多场地。索引页面将所有场地显示为部分。

索引页面还有一个表单,其中包含每个区域的复选框和一个提交按钮,并允许用户根据选择的区域过滤显示的场所。复选框使用 jQuery-UI 按钮小部件来获得更好的外观。

索引页有一个城镇的.png地图图像,显示所有不同的区域,每个区域都是可点击的,并且与过滤器表单中的区域复选框相对应。 map.png 是图像地图的背景,其中包含每个区域的多边形形状。

我已经设法使用 javascript 将地图上的区域链接到区域复选框,因此用户可以选择表单中的复选框或地图上的区域来过滤结果。

$(function() {
  $('area').click(function(){
    var name = $(this).data("areanum");
    var $checkbox = $('#' + name);
    $checkbox.attr('checked', !$checkbox.attr('checked'));
  });       
});

地图上的区域有一个与其对应复选框的 id 匹配的 areanum 值。

但是,如果用户单击地图上的某个区域,则在提交表单并重新加载页面之前,相应的复选框看起来不会被选中。

我怎样才能做到这一点,以便在地图上选择一个区域后,相应的复选框似乎也已被选中?

如果需要任何其他代码,请询问,我会发布,我不想用大量代码来解决问题,因为我不太确定什么是重要的。

对此的任何帮助将不胜感激!

【问题讨论】:

  • 如果您可以发布您所拥有的 jsfiddle,那么提供帮助会容易得多。

标签: javascript html ruby-on-rails jquery-ui checkbox


【解决方案1】:

... 复选框使用 jQuery-UI 按钮小部件来获得更好的外观。 ...

啊哈!当以编程方式更改自定义 jQuery UI 复选框的复选框状态时,您需要明确告诉复选框刷新它的显示状态:

$('area').click(function(){
    var name = $(this).data("areanum");
    var $checkbox = $('#' + name);
    $checkbox.attr('checked', !$checkbox.attr('checked'));
    $checkbox.button("refresh");
});  

【讨论】:

  • 感谢您的快速答复!我得等明天下班后试试,因为我要睡觉了,但它看起来很有希望!
  • 不错的收获!这里还有一些字符,所以我满足 cmets 的最小字符限制。
【解决方案2】:

试试这个:

$("input[type=checkbox]").prop('checked', true).uniform();

【讨论】:

  • 嗨 Muhsen,欢迎来到 Stack Overflow。您能否稍微扩展您的答案,以解释它将如何以及为什么会解决提问者的问题?在这个网站上,我们希望答案清晰易懂,因此代码需要一些解释和上下文——帮助读者了解它是否对他们有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2020-09-16
  • 1970-01-01
  • 2016-08-23
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多