0

我有 2 个名为“primaryTag”和“primaryCategory”的选择框

primaryCategory 依赖于 primaryTag

还有 2 个称为“标签”和“类别”的多选选项。

当 'primaryTag' 改变时,'tags' 应该被取消选择。

当 'primaryCategory' 改变时,'categories' 多选选项应该被取消选择。即使在primaryTags上的更改事件之后“primaryCategory”发生了变化,也应该重置“categories”多选。

我有以下代码:

$('document').ready(function(){
    $("#primaryTag").change(function () {
        tagId = $("#{{ admin.uniqId }}_primaryTag option:selected").val();
        $("#primaryCategory").val("option:first");
        $("#tags *").attr("selected", false);
    });

    $("#primaryCategory").change(function () {
        $("#categories *").attr("selected", false);
    });

});

primaryTag并且primaryCategory是选择框。 tags并且categories是多选框。

当我更改 primaryTag 时,primaryCategory 选择框会根据需要填充第一个选项的默认值。但是,我还希望重置类别多选框(取消选择所有选项)。而这并没有发生。我怎样才能做到这一点?

这是HTML

4

3 回答 3

1

$('document')必须是$(document)。之后记住默认的主要类别。在主要标签更改时设置默认主要类别并重置标签选项。在主要类别更改时重置类别选项。

$(document).ready(function() {
    var iDefault = $("#primaryCategory").val();

    $("#primaryTag").change(function () {
        $("#primaryCategory").val(iDefault);
        $("#tags option").attr("selected", false);
    });

    $("#primaryCategory").change(function () {
        $("#categories option").attr("selected", false);
    });
});

另请参阅此示例

=== 更新 ===

如果要设置主要类别的第一个选项,请替换为:

$(document).ready(function() {
    $("#primaryTag").change(function () {
        $("#primaryCategory option:first").attr("selected", true);
        $("#tags option").attr("selected", false);
    });

    $("#primaryCategory").change(function () {
        $("#categories option").attr("selected", false);
    });
});

另请参阅此示例

=== 更新 ===

如果您希望在重置主要类别后重置类别,请将第一个版本替换为:

$(document).ready(function() {
    var iDefault = $("#primaryCategory").val();

    $("#primaryTag").change(function () {
        $("#primaryCategory").val(iDefault);
        $("#primaryCategory").change();
        $("#tags option").attr("selected", false);
    });

    $("#primaryCategory").change(function () {
        $("#categories option").attr("selected", false);
    });
});

另请参阅此更新示例

于 2012-04-16T06:26:27.277 回答
0

您可以使用 onclick 功能。

<element onclick="newfunction()"></element>
于 2012-04-16T06:13:15.170 回答
0

使用 jQuery 清除多选框基本上有两种方法:

$("#my_select_box").val(null);

或者

$("#my_select_box option").attr("selected",false);

第一个将选择元素的值更改为空。第二个删除 select 元素中所有选项的 selected 属性。

我猜你的代码的效果是:

$("#my_select_box").attr("selected",false);

这不起作用,因为#my_select_box它是实际的选择元素。删除selectedselect 元素本身的属性没有任何效果,因为该属性仅对其中的选项有意义。

您真的必须尝试Firebug或 chrome 内置的开发人员工具。它们可以极大地帮助调试 javascript 和 jQuery 代码。

于 2012-04-16T06:30:52.560 回答