AngularJS系列之select下拉选择第一个选项为空白的解决办法

点击打开链接


今天给大家介绍一下AngularJS系列之select下拉选择第一个选项为空白的解决办法。
相信大家也经常遇到这种情况吧:在使用AngularJS中的select组件开发的时候,莫名其妙的第一个选项就变成空白了,而且选中其中非空白的地方,第一个选项的空白位置又奇妙的消失了。
今天就举几个例子给大家介绍一下种种情况的处理办法,下面首先给出一个具体例子介绍一下:

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>  
  6. </head>  
  7. <body>  
  8. <div ng-app="myApp" ng-controller="myCtrl">  
  9. <p>选择网站:</p>  
  10. <select ng-model="selectedSite">  
  11.     <option  value="">请选择</option><!-- 这里是重点,必须将value值设置成空字符串,否则第一个选项还是会留空白出来-->  
  12.     <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>  
  13. </select>  
  14. <h1>你选择的是: {{selectedSite}}</h1>  
  15. </div>  
  16. <script>  
  17. var app = angular.module('myApp', []);  
  18. app.controller('myCtrl', function($scope) {  
  19.    $scope.sites = [  
  20.         {site : "Google", url : "http://www.google.com"},  
  21.         {site : "Runoob", url : "http://www.runoob.com"},  
  22.         {site : "Taobao", url : "http://www.taobao.com"}  
  23.     ];  
  24. });  
  25. </script>  
  26. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。</p>  
  27. </body>  
  28. </html>  
第一种办法就是在select的下面加上一个默认option,不过有一点必须特别注意,就是在option中的value值必须设置为“”(也就是空字符串),否则上面第一个选项还是会留空白出来。

这样可能就会有人说我第一个option要是不想获取的value值为空,那该怎么办,比如我第一个value值想设置成“请选择”这个字符串呢?

这种情况也好解决,下面看一下下面这个例子,大家就会明白要怎么做了。

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>  
  6. </head>  
  7. <body>  
  8. <div ng-app="myApp" ng-controller="myCtrl">  
  9. <p>选择网站:</p>  
  10. <select ng-model="selectedSite">  
  11.     <option  value="请选择">请选择</option><!--注意这个地方要和下面的设置的值要一致 -->  
  12.     <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>  
  13. </select>  
  14. <h1>你选择的是: {{selectedSite}}</h1>  
  15. </div>  
  16. <script>  
  17. var app = angular.module('myApp', []);  
  18. app.controller('myCtrl', function($scope) {  
  19.    $scope.sites = [  
  20.         {site : "Google", url : "http://www.google.com"},  
  21.         {site : "Runoob", url : "http://www.runoob.com"},  
  22.         {site : "Taobao", url : "http://www.taobao.com"}  
  23.     ];  
  24.     $scope.selectedSite="请选择";<!-- 注意这个设置值,要和上面的value值相一致才可以-->  
  25. });  
  26. </script>  
  27. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。</p>  
  28. </body>  
  29. </html>  
从例子中就可以看出,其实就是在value中添加自己想要的值信息,然后再控制器中进行传初始值。

但是这个时候大家可能会又有一个问题,就是我如果想第一个不想要默认值呢,我就想把数据的任意一个值放在第一个选项里面呢,而且还不能留空白在上面。

这种情况其实也好解决,下面就再看一个例子:

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>  
  6. </head>  
  7. <body>  
  8. <div ng-app="myApp" ng-controller="myCtrl">  
  9. <p>选择网站:</p>  
  10. <select ng-model="selectedSite">  
  11.     <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>  
  12. </select>  
  13. <h1>你选择的是: {{selectedSite}}</h1>  
  14. </div>  
  15. <script>  
  16. var app = angular.module('myApp', []);  
  17. app.controller('myCtrl', function($scope) {  
  18.    $scope.sites = [  
  19.         {site : "Google", url : "http://www.google.com"},  
  20.         {site : "Runoob", url : "http://www.runoob.com"},  
  21.         {site : "Taobao", url : "http://www.taobao.com"}  
  22.     ];  
  23.     $scope.selectedSite=$scope.sites[0].url;<!-- 这里只要把想要第一次出来的url放在这里就可以实现option默认出现的效果了-->  
  24. });  
  25. </script>  
  26. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。</p>  
  27. </body>  
  28. </html>  
从上面的例子可以很明显的看出,只要在控制器中添加相应的初始值,就可以实现select中默认选中的效果了。

这样基本就全部解决了select中第一个选项留空白的问题了。


项目中使用ng-options时,发现循环出来的select的第一个option为空,页面审查元素如下图: 
这里写图片描述 
页面效果: 
这里写图片描述 
其代码如下: 
这里写图片描述

<select ng-model="selectUser"  ng-options="i.NAME for i in users"></select>
 
 
  • 1
  • 1

这不但影响样式,而且影响用户体验。那么怎么删除select第一个为空的option呢? 
解决办法是在这个select里加上这样一句话就好了: 
解决问题后的代码

<option value="" selected hidden></option>
 
 
  • 1
  • 1

这样的话,循环出来的select第一个为空的option就不会显示了,审查元素如下: 
这里写图片描述 
页面效果如下: 
这里写图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值