yii2 - 依赖字段 yii2

标签 yii2 field onchange

我需要框架 Yii2 中的 2 个依赖字段示例:

2 fields in ActiveForm

我希望当我插入“Numero de Personas”= 5或其他数值时,自动“Consumo de Agua”= 2 *“Numero de Personas”= 10。 我看到了 onchange yii2 但我不知道如何使用它,我认为 onchange yii2 是一个替代方案。

<?= $form->field($model, 'NUM_PERSONAS')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'AGUA_CONSUMO')->textInput(['maxlength' => true]) ?>

更新:

有 2 个计算字段示例:

$("#consumo-form #{$aguaId},#consumo-form #{$personaId}").on("keyup", function (e) {
        var persona = $("#consumo-form #{$personaId}").val();
        var agua = $("#consumo-form #{$aguaId}").val();
        $("#consumo-form #{$indConsumoAguaM}").val(persona*agua)
    });

最佳答案

这是我将使用的方法:

在您的 View 中:

<?php
    $personaId = Html::getInputId($model, 'NUM_PERSONAS');
    $aguaId = Html::getInputId($model, 'AGUA_CONSUMO');
?>

    <!-- Begin of form -->
    <?= $form->field($model, 'NUM_PERSONAS')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'AGUA_CONSUMO')->textInput(['maxlength' => true]) ?>
    <!-- End of form -->

<?php
$js = <<<JS
$("#my-form-id #{$personaId}").on("keyup", function (e) {
    var persona = $(this).val();
    $("#my-form-id #{$aguaId}").val(persona*2)
});
$("#my-form-id #{$aguaId}").on("keyup", function (e) {
    var agua = $(this).val()%2 == 0 ? $(this).val() : $(this).val() - 1;
    $("#my-form-id #{$personaId}").val(agua/2)
});
JS;
$this->registerJs($js);

这样,两个字段都会在另一个字段更改后尝试自动完成。但是,为了安全起见,我们还需要添加对模型规则的验证。

在您的模型中:

public function rules()
{
    return [
        // Your rules 
        [['NUM_PERSONAS', 'AGUA_CONSUMO'], 'checkValues']
    ];
}

public function checkValues($attribute)
{
    $persona = $this->NUM_PERSONAS;
    $agua = $this->AGUA_CONSUMO%2 == 0 ? $this->AGUA_CONSUMO : $this->AGUA_CONSUMO - 1;
    if ($persona != $agua/2) {
        $this->addError($attribute, 'Error message');
    }
}

关于yii2 - 依赖字段 yii2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071111/

相关文章:

dependency-injection - 如何在 Yii2 配置中注入(inject)类依赖?

yii - 如何进行字段枚举迁移 yii2

javascript - 通过单选按钮隐藏/显示 div

python - 使用 protobuf,如何从已解析的对象中删除字段?

javascript - 非常简单的脚本在 onChange 事件上失败。未捕获的 TypeError : document. getElementbyId 不是函数

Bootstrap 中的 jQuery 组合框 onchange 事件不起作用

Yii2 为 AssetBundle 添加条件

php - 如何在 yii2 中与 mysql 数据库进行区分大小写的 where() 'in' 匹配

c# - 为什么我们使用字段和属性而不仅仅是变量?

java - 如何通过反射将字段值设置为普通对象