在重新加载页面之前,复选框未获得检查状态

时间:2012-01-22 22:39:30

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

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

索引页面还有一个表单,其中包含每个区域的复选框和一个提交按钮,并允许用户根据所选区域过滤显示的场地。复选框使用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值。

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

如何在地图上选择某个区域时,如何选中相应的复选框?

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

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

  

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

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

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

答案 1 :(得分:0)

试试这个:

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