加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dojo小例子(20)动态加载的Select增加一个option空白项

发布时间:2020-12-16 21:26:48 所属栏目:百科 来源:网络整理
导读:有时我们希望下拉菜单带有提示项,比如默认第一项是“--请选择--”;或者“--全部--”表示包含下拉菜单中的所有条件。 有两种实现方式: 1、修改store,在其中添加数据; 2、修改options,在其中添加option 第一种方式: var json = new JsonRest({target: u

有时我们希望下拉菜单带有提示项,比如默认第一项是“--请选择--”;或者“--全部--”表示包含下拉菜单中的所有条件。

有两种实现方式:

1、修改store,在其中添加数据;

2、修改options,在其中添加option

第一种方式:

var json = new JsonRest({target: url});
json.query().then(function(items){
  items.reverse(); // 先反转
  items.push({'num' : 'null','name' : '--SELECT--'}); // 添加
  items.reverse();// 再反转回来,最末变第一
  var store = new Memory({data: items,idProperty: 'num'});
  var os = new ObjectStore({ objectStore: store });
  var select = new Select({store:os,labelAttr:"name"});
});

里面用到了reverse()方法,用unshift()方法也可以

第二种方式:
var select = new Select({				  		
  store:os,required : true,labelAttr:"name",onSetStore: function() {
    this.options.unshift({label:'--SELECT--',value:'NULL',selected:true});
    this._loadChildren();
  }
});

补充1:

对于FilteringSelect,第二种方式不适用。其余部分不变,只需对第一种方式微调,就能支持FilteringSelect

var select = new FilteringSelect({
  store:os,value: "null",// 默认选中我们增加的空白项
  labelAttr:"name",searchAttr: "name"
});

补充2:

谢谢网友的提醒。上面两种方式都是通过增加option来实现,也就是新增的option也会出现在下拉菜单项中。对于菜单项中出现“--全部--”还可以理解,但是出现“--请选择--”就没意义了。我们希望“--请选择--”只是一个hint,在用户没操作该下拉菜单时显示,用户操作时消失,而且不出现在下拉项中。对于FilteringSelect可以这样做:

select.set('displayedValue','--SELECT--');
但是会有个问题,会弹出“输入的值无效”的错误提示,所以还需要
select.set('state','');
消除错误提示,并且结合事件处理才能完美解决。

补充3:

增加option实现“--请选择--”hint,也可以通过删除option达到“--请选择--”不显示到下拉项中的目的。Select的实现:

// 消除'--SELECT--'
aspect.before(select,"toggleDropDown",function(){
  this.removeOption('NULL'); // '--SELECT--'的value是'NULL'
});

FilteringSelect的实现:

aspect.before(select,function(){
  this.store.objectStore.remove('NULL');
  this.set('displayedValue','');
});

补充4:

其实如果只想给FilteringSelect增加hint,还有更简单的方法。设置placeholder:'Quick navigation'即可。dojo在线api页的搜索框就是很好的例子。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读