将multiselect中的一些特定选项设置为禁用和选中

时间:2014-01-18 08:14:49

标签: javascript jquery

我有一个多选框,有一些选项,我可以通过jquery选择或禁用,但我不能让他们同时做两个。我怎么能通过jquery做到这一点?

这就是我正在做的事情 - JSFiddle

在这个例子中,我在加载时选择一个选项,然后禁用它,但该选项仍然是可选择的。我希望一直选择和禁用它。

现在我使用点击方法通过添加以下行来保持选择:

$('#multiSelect').click(function()
{$('#multiSelectoption[value="three"]').attr('selected',true);});

编辑: 人们正在发布我们在点击时再次选择该选项的解决方案,我已经在我的问题中发布了该选项。我想知道的是,如果有一个更好的解决方案,因为这个看起来不太好。

5 个答案:

答案 0 :(得分:2)

js小提琴:

http://jsfiddle.net/Tf5ZZ/5/

<强> jquery的:

//disabling on load:
$('#multiSelect option[value="three"]').prop('disabled', true);

$("#multiSelect option").on('click',function() {
    $('#multiSelect option[value="three"]').prop('selected',true);
});

答案 1 :(得分:0)

这是一小段jQuery来解决你的问题。

 $("#multiSelect option").click(function()
 {
      $("#multiSelect option[value='three']").prop("selected", true);
 });

答案 2 :(得分:0)

如果要点是为了防止选择框的值在设置后被更改,那么你应该禁用选择框而不仅仅是选项。

$('#multiSelect option[value="three"]').prop('selected',true);
$('#multiSelect').prop('disabled',true);

请看这个小提琴演示:http://jsfiddle.net/zKbVm/1/

此外,prop()attr()之间的区别在于attr()获取/设置元素的属性(反映元素的初始状态)和prop()得到/设置其属性(表示DOM节点的当前状态)。有关详细信息,请参阅https://stackoverflow.com/questions/5874652/prop-vs-attr

答案 3 :(得分:0)

我猜你可以在创建小部件后创建的multiselect创建事件中处理它。

以下是我正在处理的当前应用程序中使用的代码片段;

create: function (event, ui) {
    $(this).multiselect("widget").find(":checkbox").each(function () {
        var checkBoxValue = $(this).val();
        // Using linq.js to query the fields and determine whether
        // the field is required in my case.
        // Replace this if statement with your own logic here
        if (Enumerable.From(CHAMP.cache.fields).Count(function (x) {
            return x.Id.toString() == checkBoxValue && x.IsRequired == true;
        }) > 0) {
            $(this).attr("checked", "checked");
            $(this).attr("disabled", "disabled");
        }
    });
}

答案 4 :(得分:0)

do {
        promptUser(square);
        printBoard(square);

        if(fullBoard(square)) { 
            isLatinSquare(square);
        }
    }while(isLatinSquare(square));
        System.out.println("you win");
        printBoard(square);

}