仅启用选择框中的第一个选项

时间:2011-03-21 19:01:11

标签: jquery html jquery-selectors html-select

我的页面中有一些“选择框”,我不想让用户选择任何选项,但第一个(请不要问我原因)。我无法使用'readonly'属性更改'input',我也无法删除选项。我很抱歉这些限制,但必须这样。

我试过了:

 $('select').attr('disabled',true);

但碰巧我不想'松散'这个价值。我有一个使用这些值的ajax调用,当我禁用它时,值'不存在'了。

我也试过了:

 $('select').click(function(){
      return false;
 });

但没有成功。

5 个答案:

答案 0 :(得分:6)

你可以用一行代码来完成。

$('option').attr('disabled','disabled').eq(0).removeAttr('disabled');

查看http://jsfiddle.net/yaGJc/1/

上的工作示例

您也可以使用:gt()大于选择器,尽管第一个可以更好地控制启用哪个选项。

$('option:gt(0)').attr('disabled','disabled');

查看http://jsfiddle.net/yaGJc/2/

上的工作示例

答案 1 :(得分:1)

使用jquery禁用选项:

$('#selector option:gt(0)').attr('disabled', 'disabled');

Here is the fiddle

应该生成这样的HTML:

<select multiple>
    <option>test1</option>
    <option disabled>test2</option>
    <option disabled>test3</option>
    <option disabled>test4</option>
    <option disabled>test5</option>
    <option disabled>test6</option>
</select>

答案 2 :(得分:0)

也许你可以试试这个

$('.select').attr('disabled', 'disabled');

我之前和之斗争过......

答案 3 :(得分:0)

var firstValue = $('select:first').val();
$('select:first').attr('disabled', true);

然后在ajax调用中使用firstValue变量。

答案 4 :(得分:0)

不确定你想要做那样的事情,但你可以试试

$("select option").each(function (index, obj) {
    if( index > 1 )
        $(obj).attr("disabled", "disabled");
});
相关问题