Select2 - 从js开始只读(不禁用!)

Cat*_*lin 13 javascript jquery-select2

如何动态地将select2组合框设置为只读?

这是我到目前为止所尝试的:

$('...').attr({'readonly': 'readonly'}).trigger('change.select2');
$('...').attr({'readonly': 'readonly'}).trigger('change');
$('...').select2().enable(false);
Run Code Online (Sandbox Code Playgroud)

Ali*_*mal 13

这是最新的解决方案select2(已通过测试4.0.7),使用css only

/*Select2 ReadOnly Start*/
    select[readonly].select2-hidden-accessible + .select2-container {
        pointer-events: none;
        touch-action: none;
    }

    select[readonly].select2-hidden-accessible + .select2-container .select2-selection {
        background: #eee;
        box-shadow: none;
    }

    select[readonly].select2-hidden-accessible + .select2-container .select2-selection__arrow, select[readonly].select2-hidden-accessible + .select2-container .select2-selection__clear {
        display: none;
    }

/*Select2 ReadOnly End*/
Run Code Online (Sandbox Code Playgroud)

  • 这适用于 4.0.13。我还必须使用: element.attr("readonly",<true or false>); (4认同)
  • 好的!谢谢!我只是想保留箭头,所以我使用: `select[readonly].select2-hidden-accessible + .select2-container .select2-selection .select2-selection__rendered { opacity: .5; } select[只读].select2-hidden-accessible + .select2-container .select2-selection__arrow{ 不透明度:.35; }` (3认同)
  • 这很漂亮! (2认同)
  • 这就像一个魅力。,您需要将只读属性添加到您的正常选择中 (2认同)

laf*_*ber 10

Select2的解决方案- 问题#3387 - Readonly支持:

select[readonly].select2 + .select2-container {
  pointer-events: none;
  touch-action: none;

  .select2-selection {
    background: #eee;
    box-shadow: none;
  }

  .select2-selection__arrow,
  .select2-selection__clear {
    display: none;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @Ali Jamal 的解决方案更实用 (2认同)

Cas*_*ook 9

参见:http : //select2.github.io/select2/

我这样做:

$("#modelname-fieldname").select2({disabled:readonly});
Run Code Online (Sandbox Code Playgroud)

哪里:

  • modelname-fieldname 如下所示: $form -> field($modelname, "fieldname") -> widget(Select2::classname(), [ ... ]);
  • readonly 是true,false或字符串 readonly

(可选)您可以将鼠标悬停在该select2字段上时更改光标。

  • 这与 4.0.7 完美配合。`$("#YourSelect").select2({disabled:'readonly'})`。只需确保您将只读作为字符串即可(感谢高级传教士)。 (3认同)
  • 该解决方案不会将数据发送到表单 (3认同)
  • 这不再是正确的答案。Select没有`readonly`属性,此(`.select2({disabled:readonly});`)也已从select2中删除。这样做的方法是禁用选择(如果需要发送值,则使用隐藏的输入) (2认同)
  • 第一个代码块帮助了我,我坐在了 `{disabled:'readonly'}` 并且它起作用了 ;) (2认同)