在AngularJS中选择一个输入字段时,如何禁用该字段?(均使用相同的ng模型)

How to disable one input field when one is selected in AngularJS? (both using same ng-model)

本文关键字:字段 模型 ng 何禁用 选择 AngularJS 一个 输入      更新时间:2023-09-26

嗨,我有两个输入字段。输入字段A(下拉列表)和输入字段B。这两个字段都发布了相同的值(相同的ng模型)。我需要实现的是,当用户从下拉按钮中选择一个选项时,需要清除第二个输入字段。我如何使用AngularJS做到这一点?我对AngularJS很陌生。提前谢谢。

<table align="center">
            <tr>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>BB</b></span>
                        <input class="form-control" type="input" ng-model="final_data.bb" readonly>
                    </div>
                </td>
                    <p align="center" ng-show="processing['update_ms']" ng-class="processing['update_mst'].class" ng-cloak>
                        {{ processing['update_ms'].msg }}
                    </p>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>InputA</b></span>
                        <select class="form-control" ng-change="get_mass(); disableMass() " ng-model="final_data.mas" ng-options="m as m for m in maslist" required ng-cloak>
                        </select> &nbsp;
                    </div>
                </td>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>InputB*</b></span>
                        <input class="form-control" ng-disabled="isSelected" ng-model="final_data.mas" type="input">&nbsp;
                    </div>
                </td>
            </tr>
        </table>

如何为select input和input字段创建两个不同的模型,并用nil初始化它们。所以你可以:

<select ng-model='selectModel' ng-disabled='inputModel'>
...
</select>
<input type='text' ng-model='inputModel' ng-disabled='selectModel' />

如果您需要通过更改选择和输入模型来更改原始模型:

html

<select ng-model='selectModel' ng-disabled='inputModel' ng-change=syncModel(selectModel)>
...
</select>
<input type='text' ng-model='inputModel' ng-disabled='selectModel' ng-change=syncModel(selectModel)/>

js

$scope.originalModel = null;
$scope.syncModel = function (value) {
    $scope.originalModel = value;
}

更新:如果您想清除另一个字段:

$scope.syncModel = function (value) {
    $scope.originalModel = value;
    //clearing
    if (value == $scope.inputModel) 
        $scope.selectModel = null;
    else
        $scope.inputModel = null;
}

脏但容易

更新:您的代码:

        <table align="center">
            <tr>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>BB</b></span>
                        <input class="form-control" type="input" ng-model="final_data.bb" readonly>
                    </div>
                </td>
                    <p align="center" ng-show="processing['update_ms']" ng-class="processing['update_mst'].class" ng-cloak>
                        {{ processing['update_ms'].msg }}
                    </p>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>InputA</b></span>
                        <select class="form-control" ng-change="get_mass(); syncModels(selectModel) " ng-model="selectModel" ng-options="m as m for m in maslist" required ng-cloak ng-disabled="inputModel">
                        </select> &nbsp;
                    </div>
                </td>
                <td>
                    <div class="input-group">
                        <span class="input-group-addon"><b>InputB*</b></span>
                        <input class="form-control" ng-disabled="selectModel" ng-model="inputModel" ng-change="syncModels(inputModel)" type="input">&nbsp;
                    </div>
                </td>
            </tr>
        </table>

js

$scope.selectModel = null;
$scope.inputModel = null;
$scope.syncModels = function (value) {
   $scope.final_data.mas = value;
   //clearing
   if (value == $scope.inputModel) 
      $scope.selectModel = null;
   else
      $scope.inputModel = null;
}

这没有意义。

ng-model是输入字段显示值的实时表示。至少对于文本输入,显示的文本始终等于其ng-model值。

我也很难弄清楚你的用例。当用户键入输入字段时,下拉列表会发生什么情况?