天天看点

修改select2实现163邮箱收件人输入的效果

公司需要这样的一个实现效果,但是自己水平还还不是很高。只能修改别人的代码来实现我的效果。

jquery 版本jquery-1.10.2.min.js+

https://github.com/ivaynberg/select2这个是没修改过的github地址。

http://pan.baidu.com/s/1qW6qMo0这个是我分享的

css文件和图片自己找位置

修改select2实现163邮箱收件人输入的效果
<!DOCTYPE html>
<html >
<head>
<title>dzq</title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="css/select2.css" target="_blank" rel="external nofollow"  />
</head>
<body>
   <input type="hidden" id="select" style="width:300px"/>
<script src="js/jquery.min.js"></script> 
<script src="js/select2.js"></script>
<script>
	$(document).ready(function(){
		var data = [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}];
		$('#select').select2({
			multiple: true,
			selectedCilck:function(data){
				alert(data.id);
			},
			data:data
		});
	});
</script>
</body>
</html>
           

这个是实现下拉选中的效果

修改select2实现163邮箱收件人输入的效果

默认值有三个。

点击之后的效果

修改select2实现163邮箱收件人输入的效果

这个是原来的主要的功能

增加的功能有1:添加了点击按钮的事件

                        2:在搜索不到的情况下,输入英文的分号,自动把输入的内容变成按钮

修改select2实现163邮箱收件人输入的效果

项目中写的js参考

1:

function initReqList(){
			$('.reqListSelect').select2({
			 	multiple: true,
			 	selectedCilck:function(da){
					alert(da.id);
				},
				data:[]   //这个地方是放下拉列表初始化的数据
		 	});
		}
           

这个js下拉菜单没有任何值,全是自己输入不是搜索来的。

2:

function initSelect(){
			var projectLine = $("#projectLineId").find("option:selected").val();
			var params = {
			 		q: projectLine 
		 	};
			$.ajax({
				 url: "${appRoot}/requirement/getSelectReqMap.do",
				 type :'post',
				 async:false,
				 dataType: 'json',
				 data: params,
				 success: function (d) {
					 $('.select').select2({
						 	multiple: true,
						 	selectedCilck:function(da){
								alert(da.id);
							},
							data:d.option    //这个是初始化的json
					 });
				 }
			});
		}
           

其实select2支持ajax参数的,但是开始没弄出来(好像是因为别的错误

修改select2实现163邮箱收件人输入的效果

)之后改了方案。

过了几天后找到了支持ajax的方法补上

$(function(){
		$("#auditName").select2({
			placeholder: "Search Users",
                        minimumInputLength: 2,
			multiple:true,
			ajax:{
				url:"/user/select.do",
				type:"post",
				dataType:"json",
				data:function(term,page){
					return {
						userName:term,
						page_limit:10
					};
				},
				results:function(data,page){
					return {results:data};
				}
			}
		});
	});
           

<input type="hidden" id="auditName" name="auditName" style="width:300px"/>

3:

这个是查看页面的带有默认值的

function initSelect(){
			var projectLine = $!project.projectLineId;
			var projectId = $("#id").val();
			var params = {
			 		q: projectLine,
			 		projectId:projectId
		 	};
			$.ajax({ 
				 url: "${appRoot}/requirement/getSelectAllReqMap.do",
				 type :'get',
				 async:false,
				 dataType: 'json',
				 data: params,
				 success: function (d) {
					 $('.select').select2({
						 	multiple: true,
						 	selectedCilck:function(da){
								alert(da.id);
							},
							data:d.option
					 });
					 $('.select').select2('data', d.selected);   //这个是默认值
					 $('.select').select2("readonly", true);     //因为是查看页面所以设置为readonly
				 }
			});
		}
           

4:因为带有默认值所以我的json格式为

{selected:[{id:0,text:第一个}],option:[{id:0,text:第一个},{id:1,text:第二个}]}