Yii2:Select2 不使用 jQuery 向控制器发送值
Posted
技术标签:
【中文标题】Yii2:Select2 不使用 jQuery 向控制器发送值【英文标题】:Yii2: Select2 doesn't send value to controller using jQuery 【发布时间】:2019-05-07 04:40:50 【问题描述】:我正在使用 Select2 小部件:
<?php echo $form->field($model, 'id_person')->widget(
\common\widgets\Select2::classname(),
[
'items' => \yii\helpers\ArrayHelper::map(\app\models\Persons::find()->all(), 'id_person', 'name_person'),
'placeholder' => '',
'class' => 'form-control',
'options' => [
'id' => 'idPerson' // For jQuery.
]
]
)
?>
然后我使用 jQuery 禁用它并在我阅读 in this *** question 时设置一个值:
function($)
$("#idPerson").prop("disabled", true)
.select2('data', id: 1, a_key: 'John');
);
它正确禁用了 Select2,但 该值未设置,因此控制器未收到该值。
【问题讨论】:
【参考方案1】:将不会提交禁用的输入。 检查这个:values of disabled inputs will not be submitted?。 也许您可以使用“只读”而不是禁用输入:http://demos.krajee.com/widget-details/select2#settings
【讨论】:
【参考方案2】:如果您使用的是kartik-v\select2
小部件,那么您需要知道它使用的是插件select2 的Version 4.0
。
对于版本,>=4.0
变得更简单,您需要使用.val()
将选项设置为选择并使用.trigger()
实际使选项更改可见,您需要查看可以触发的两件事change
或 change.select2
change
触发所有附加的更改事件,包括 select2。
change.select2
仅触发 select2
change
事件。
您需要将代码中的行更改为以下内容
$("#idPerson").val(1).trigger('change');
有关How to Add, Select or Clear
的更详细示例,请参见此处。
【讨论】:
以上是关于Yii2:Select2 不使用 jQuery 向控制器发送值的主要内容,如果未能解决你的问题,请参考以下文章
Yii2 select2 数据库异常绑定变量数与令牌数不匹配
不加载kartik 的select2 作为GridView 中的过滤器。 Yii2