如何通过javascript更改选择框时触发新功能?

时间:2012-04-16 06:02:13

标签: javascript jquery

我有两个名为'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);
    });

});

primaryTagprimaryCategory是选择框。 tagscategories是多选框。

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

这是HTML

3 个答案:

答案 0 :(得分: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);
    });
});

另见this example

=== UPDATE ===

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

$(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);
    });
});

另见this example

=== UPDATE ===

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

$(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);
    });
});

另见updated example

答案 1 :(得分:0)

你可以使用onclick功能。

<element onclick="newfunction()"></element>

答案 2 :(得分:0)

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

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

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

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

我猜你的代码的效果是:

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

不起作用,因为#my_select_box是实际的select元素。删除select元素本身的selected属性无效,因为该属性仅对其中的选项有意义。

您必须尝试使用​​Firebug或Chrome中内置的开发人员工具。他们可以极大地帮助调试javascript和jQuery代码。