求一个angularJS写法

clipboard.png
A是下拉列表 BC是文本框。
默认C文本框是隐藏。B文本框可用 。
要实现当A下拉选择最后一个元素,B禁用同时C显示。
A不选择最后一个元素,恢复原样。

            <fieldset>
            <legend>Household Income Survey</legend>

            <div class="row">
                <div class="form-group col-xs-12 col-sm-6">
                    <label for="HouseholdSize" class="control-label">I. How many people live in your home?</label>
                    <select class="form-control" name="HouseholdSize" id="HouseholdSize">
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="8+">8+</option>
                    </select>
                </div>
                <div class="form-group col-xs-12 col-sm-6">
                    <label for="HouseholdIncome" class="control-label">II. Household Annual Income</label>
                    <select class="form-control" name="HouseholdIncome" id="HouseholdIncome">
                        <option value=""></option>
                        <option value="15171">15171</option>
                        <option value="21590">21590</option>
                        <option value="29101">29101</option>
                        <option value="36612">36612</option>
                        <option value="44123">44123</option>
                        <option value="51634">51634</option>
                        <option value="59145">59145</option>
                        <option value="66656">66656</option>
                        <option value="74167">74167</option>
                    </select>
                </div>
            </div>

            <div class="form-group hidden" id="HouseholdIncomeGroup">
                <label class="control-label" for="HouseholdIncome">III. If there are more than 8 people living at your
                    home, please write the annual household income here</label>

                <div class="input-group">
                    <div class="input-group-addon">$</div>
                    <input type="text" class="form-control" name="" placeholder="">
                </div>
            </div>
        </fieldset>
阅读 3.4k
3 个回答

html代码:

<fieldset ng-controller="IncomeCtrl">
    <legend>Household Income Survey</legend>

    <div class="row">
        <div class="form-group col-xs-12 col-sm-6">
            <label class="control-label">
                I. How many people live in your home?
            </label>
            <select class="form-control" ng-model="householdSize" ng-change="change()">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="8+">8+</option>
            </select>
        </div>
        <div class="form-group col-xs-12 col-sm-6">
            <label class="control-label">
                II. Household Annual Income
            </label>
            <select class="form-control" ng-model="householdIncome" ng-disabled="showDefIncom">
                <option value=""></option>
                <option value="15171">15171</option>
                <option value="21590">21590</option>
                <option value="29101">29101</option>
                <option value="36612">36612</option>
                <option value="44123">44123</option>
                <option value="51634">51634</option>
                <option value="59145">59145</option>
                <option value="66656">66656</option>
                <option value="74167">74167</option>
            </select>
        </div>
    </div>

    <div class="form-group" id="HouseholdIncomeGroup" ng-show="showDefIncom">
        <label class="control-label">
            III. If there are more than 8 people living at your
            home, please write the annual household income here
        </label>

        <div class="input-group">
            <div class="input-group-addon">$</div>
            <input type="text" class="form-control" ng-model="defHouseholdIncome">
        </div>
    </div>
</fieldset>

JavaScript代码:

.controller('IncomeCtrl', function ($scope) {
    $scope.householdSize = 1;
    $scope.householdIncome = 15171;
    $scope.defHouseholdIncome = 0;
    $scope.showDefIncom = false;

    $scope.change = function () {
        $scope.showDefIncom = $scope.householdSize === '8+' ? true : false;
    };

})

@nightire 的思路一样的,这里贴出代码部分:

html<body ng-app="app">
    <div ng-controller="main">
        <select ng-options="item for item in items" ng-model="selVal" ng-init="selVal = items[0]"></select>
        <input type="text" ng-model="b" ng-disabled="selVal===items[items.length-1]" placeholder="b">
        <input type="text" ng-model="c" ng-show="selVal===items[items.length-1]" placeholder="c">
    </div>
    <script type="text/javascript">
    var app = angular.module('app', []);

    app.controller('main', ['$scope', function($scope) {

        $scope.items = ['1', '2', '3', '4', '5'];


    }]);
    </script>
</body>

大概这样的。

<select> 填充好,然后 ng-model 绑定作用域里一个属性,然后 $watch 这个属性,当条件满足时改变一个状态属性(预先定义好),最后将这个状态属性双向绑定给 B 的 ng-disabled 和 C 的 ng-show/ng-if 就行了吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进