Kartik/Krajee Select2 未禁用
Kartik/Krajee Select2 not disabled
将 Select 设置为 'disabled' 不会禁用该元素。用户仍然可以单击 Select2 的文本,然后打开选项框。这是一个禁用的控件,它是通过单击文本而不是向下箭头按钮打开的。
这是我的代码:
<?= $form->field($model, 'billing_currency_id')->widget(Select2::className(), [
'data' => BillingCurrency::listIdCodes('','',true),
'disabled' => true,
'options' => ['disabled' => true,],
'pluginOptions'=>[
'allowClear'=>false,
'dropdownAutoWidth'=>true,
'disabled' => true,
], ]); ?>
单击向下箭头按钮会使控件保持关闭状态,但单击控件的文本区域会打开选项框。
更新
发现了我自己的错误 - 请参阅下面的答案。
Examples (Disabled mode) section 中的官方文档描述了禁用 select:
Select2 will respond to the disabled attribute on <select>
elements.
You can also initialize Select2 with disabled: true to get the same
effect.
关于 Kartik 的扩展,您可以在 options
部分下设置 'disabled' => true
,如下所示:
'options' => ['disabled' => true],
我检查了一下,确定有效。
我犯了一个错误 - 我在网站上有一些自定义 JS 代码,当它获得焦点时会打开 Select2。我的代码导致报告的问题。
创建我的自定义代码是为了克服 Select2 的限制,即当用户跳转到控件时它不会自动打开。我已经更正了代码。当 Select2 从选项卡或单击获得焦点时,控件将打开弹出窗口,除非它被禁用。 (之前我没有检查 disabled 属性。)
$(document).on('focus', '.select2', function() {
var elSelect = $(this).siblings('select');
if (elSelect.is('[disabled]')==false) {
elSelect.select2('open');
}
});
将 Select 设置为 'disabled' 不会禁用该元素。用户仍然可以单击 Select2 的文本,然后打开选项框。这是一个禁用的控件,它是通过单击文本而不是向下箭头按钮打开的。
这是我的代码:
<?= $form->field($model, 'billing_currency_id')->widget(Select2::className(), [
'data' => BillingCurrency::listIdCodes('','',true),
'disabled' => true,
'options' => ['disabled' => true,],
'pluginOptions'=>[
'allowClear'=>false,
'dropdownAutoWidth'=>true,
'disabled' => true,
], ]); ?>
单击向下箭头按钮会使控件保持关闭状态,但单击控件的文本区域会打开选项框。
更新 发现了我自己的错误 - 请参阅下面的答案。
Examples (Disabled mode) section 中的官方文档描述了禁用 select:
Select2 will respond to the disabled attribute on
<select>
elements. You can also initialize Select2 with disabled: true to get the same effect.
关于 Kartik 的扩展,您可以在 options
部分下设置 'disabled' => true
,如下所示:
'options' => ['disabled' => true],
我检查了一下,确定有效。
我犯了一个错误 - 我在网站上有一些自定义 JS 代码,当它获得焦点时会打开 Select2。我的代码导致报告的问题。
创建我的自定义代码是为了克服 Select2 的限制,即当用户跳转到控件时它不会自动打开。我已经更正了代码。当 Select2 从选项卡或单击获得焦点时,控件将打开弹出窗口,除非它被禁用。 (之前我没有检查 disabled 属性。)
$(document).on('focus', '.select2', function() {
var elSelect = $(this).siblings('select');
if (elSelect.is('[disabled]')==false) {
elSelect.select2('open');
}
});