<script> $(document).on('change','.botentry',function () { if ($(this).val() == "") { $(this).val(0); } }); </script>
我的HTML代码是
<tbody id=" tbody_Buid" ng-if="cstate!=''"> <tr ng-repeat="b in BottomsUpData | filter:{qtr: cqtr,state: cstate} | filter:searchData | orderBy:['-mtmsegment','bizgroup']" style="text-align:center"> <td><div>{{b.bizgroup}}</div></td> <td><div>{{b.mtmsegment}}</div></td> <td><div>{{b.family}}</div></td> <td><div>{{b.series}}</div></td> <td><div>{{b.formfactor}}</div></td> <td><div><span ng-if="!b.freeze.m1 || !b.m1.isEdit">{{b.m1.value}}</span><input class="botentry" ng-if="b.freeze.m1 && b.m1.isEdit" ng-model="b.m1.value" ng-blur="buTotCalc()" type="number" /></div></td> <td><div><span ng-if="!b.freeze.m2 || !b.m2.isEdit">{{b.m2.value}}</span><input class="botentry" ng-if="b.freeze.m2 && b.m2.isEdit" ng-model="b.m2.value" ng-blur="buTotCalc()" type="number" /></div></td> <td><div><span ng-if="!b.freeze.m3 || !b.m3.isEdit">{{b.m3.value}}</span><input class="botentry" ng-if="b.freeze.m3 && b.m3.isEdit" ng-model="b.m3.value" ng-blur="buTotCalc()" type="number" /></div></td> <td><div>{{b.m1.value+b.m2.value+b.m3.value}}</div></td> </tr> </tbody>
我添加了这段代码以避免在输入框中输入空字段,但它不能与AngularJs一起使用,Jquery值零不与angularjs ng-model绑定.
解决方法
创建自定义指令(check-Empty),如下所示,并将此指令添加到HTML代码中
<tbody id=" tbody_Buid" ng-if="cstate!=''"> <tr ng-repeat="b in BottomsUpData | filter:{qtr: cqtr,'bizgroup']" style="text-align:center"> <td><div>{{b.bizgroup}}</div></td> <td><div>{{b.mtmsegment}}</div></td> <td><div>{{b.family}}</div></td> <td><div>{{b.series}}</div></td> <td><div>{{b.formfactor}}</div></td> <td><div><span ng-if="!b.freeze.m1 || !b.m1.isEdit">{{b.m1.value}}</span> <input class="botentry" ng-if="b.freeze.m1 && b.m1.isEdit" ng-model="b.m1.value" ng-blur="buTotCalc()" type="number" check-Empty /></div></td> <td><div><span ng-if="!b.freeze.m2 || !b.m2.isEdit">{{b.m2.value}}</span><input class="botentry" ng-if="b.freeze.m2 && b.m2.isEdit" ng-model="b.m2.value" ng-blur="buTotCalc()" type="number" check-Empty /></div></td> <td><div><span ng-if="!b.freeze.m3 || !b.m3.isEdit">{{b.m.value}}</span><input class="botentry" ng-if="b.freeze.m3 && b.m3.isEdit" ng-model="b.m3.value" ng-blur="buTotCalc()" type="number" check-Empty/></div></td> </tr>
myApp.directive('checkEmpty',function () { return { restrict: 'A',link: function (scope,element,attrs) { element.bind('change',function () { if (element.val() == "") { element.val(0).triggerHandler('input'); } }) } } });