【问题标题】:Why is this bit of javascript making my checkboxes difficult to check?为什么这段 javascript 让我的复选框难以检查?
【发布时间】:2012-01-29 19:54:02
【问题描述】:

我的应用程序有一个表单,它使用复选框按类型和区域对结果进行排序。有 2 个字段集,一个用于类型,一个用于区域。

区域复选框链接到图像地图的区域,因此它也可用于选择多个区域进行排序。

我有这个javascript:

这将区域复选框和图像映射的区域链接起来,因此它们都充当表单输入

    var $area = $('area');
    $area.click(function(){
        var $checkbox = $('#' + $(this).data("areanum"));
        $checkbox.attr('checked', !$checkbox.attr('checked')).button('refresh');
    });
    $('label').click(function () {
        $area.filter('[data-areanum="' + $(this).attr('for') + '"]').trigger('click');
        return true;
    });     

这会破坏类型复选框(提交表单时它们不会注册为被检查),除非我更改位:

        $('label').click(function () {
            $area.filter('[data-areanum="' + $(this).attr('for') + '"]').trigger('click');
            return false;
        });

        $('label').click(function () {
            $area.filter('[data-areanum="' + $(this).attr('for') + '"]').trigger('click');
            return true;
        });

(更改最后一行返回true)

但这使得复选框难以选择,如果单击勾选区域,它们会响应单击,但如果单击复选框标签,则只会响应双击。

我希望这是有道理的,如果需要任何澄清,我会尝试更好地表达问题。

感谢您的帮助。

【问题讨论】:

  • 你能在jsFiddle上发布一个相关的功能示例吗?

标签: javascript jquery forms checkbox


【解决方案1】:

我认为您根本不需要 label click 处理程序,因为您只是通过触发区域 click 处理程序来切换 checkbox checked 属性,这将由标签的默认行为处理当它的for 属性设置为checkbox id 时,它本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-27
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    相关资源
    最近更新 更多