为什么这个javascript让我的复选框很难检查

Why is this bit of javascript making my checkboxes difficult to check?

本文关键字:复选框 很难 检查 我的 javascript 为什么      更新时间:2023-09-26

我的应用程序有一个表单,它使用复选框按类型和区域对结果进行排序。共有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)

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

我希望这是有道理的,如果需要澄清的话,我会尽量把这个问题说得更好。

谢谢你的帮助。

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