Yii2 -通过SwitchInput widget更改DataPicker小部件选项


Yii2 - change DataPicker widget options by SwitchInput widget

DataPicker插件:

<?= $form->field($model, 'dateSale')->textInput()->widget(DatePicker::classname(), [
        'name' => 'dp_4',
        'type' => DatePicker::TYPE_COMPONENT_PREPEND,
        'disabled' => true
        ]) ?>

SwitchInput部件:

<?= $form->field($model, 'status')->textInput()->widget(SwitchInput::classname(), [
    'name' => 'status_11',
    'pluginEvents' => [
        'switchChange.bootstrapSwitch' => 'function(event, state) {
            if (state == 0){
                $("#vehicle-datesale").dp4("disabled", "false");
            }
            else {
                $("#vehicle-datesale").dp4("disabled", "true");
            }   
        }',
    ]
]) ?>

为什么上面不工作,我应该怎么做?

您需要更改SwitchInput小部件中的代码。

use yii'helpers'Html;
<?= $form->field($model, 'status')->textInput()->widget(SwitchInput::classname(), [
        'name' => 'status_11',
        'pluginEvents' => [
            'switchChange.bootstrapSwitch' => 'function(event, state) {
                if (state == 0 || state == false){
                    $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", "false");
                }
                else {
                    $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", "true");
                } 
            }',
        ]
    ]) ?>

你的代码是工作的;只有改变:

 if (state == 0 || state == false){
                $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", "false");
            }
            else {
                $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", "true");
            } 

 if (state == 0 || state == false){
                $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", false);
            }
            else {
                $("#'.Html::getInputId($model, 'dateSale').'").attr("disabled", true);
            }