前端输入适配

功能说明:在前端页面的一个输入框中,输入某个字符,下拉框中就出现对应字符的相关选项,选中某一个之后,会自动添加“;”隔开,并且支持多次输入。

代码实现(主要讲前端代码):

1.引入前端JS文件,最后两个一定需要的,前面的根据项目需要添加。

<link rel="stylesheet" href="js/jquery-confirm/dist/jquery-confirm.min.css" />
<script src="js/jquery-confirm/dist/jquery-confirm.min.js"></script>
<script src="js/pie_progress/js/jquery-pie-loader.js"></script>
<link href="js/pie_progress/css/jquery-pie-loader.css" rel="stylesheet" />
<link href="js/bootstrap-multiselect-dropdown/dist/css/bootstrap-multiselect.css" rel="stylesheet" />
<script src="js/bootstrap-multiselect-dropdown/dist/js/bootstrap-multiselect.js"></script>
<link rel="stylesheet" href="https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.css" />
<script src="https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css" />

<script src="js/jquery-editable-select/src/jquery-editable-select.js"></script>
<link href="js/jquery-editable-select/src/jquery-editable-select.css" rel="stylesheet" />

2.编写输入框。

<input id="affectedComponentsFind" type="text" class="form-control" style="float:left;margin-top:3px;height:28px;width:536px;margin-left:5px;padding:4px 10px; padding-left:4px; padding-right:15px" oninput="checkComponentName(this)"></input>
<ul class="es-list" style="font-size:8px; display:none"></ul>

3.实现oninput方法。

	function checkComponentName(item){
		var componentName;
		var text = $(item).val();
		if (text.indexOf(";") != -1){  //判断输入的内容中是否包含“;”
			var components = new Array();
			components = text.split(";");
			componentName = components[components.length-1]; //截取最后一个分号前的名字
		}else{
			componentName = text;
		}
 		var pjName = $('.pj_name').text(); //此处是用来分离项目的标志,可以忽略
		$.ajax({
			type: "GET",
			async: true,
			data: {'componentName':componentName},
	        url: "/"+pjName+"/feature/findComponentName",  //后台获取数值,此处不贴代码了
	        success: function (ret) {
	        if (200 == ret.code) {	        		
	        		var componentList = ret.result;
		        	$('.es-list').empty();   //每次先清空一下内容
		            $.each(componentList, function(i, component) {   //循环加载后台传过来的所有数据
		                $('.es-list').append('<li class="com_li" onclick="getComName(this)" onmouseover="highlightCom(this)"><span style="color:#000; cursor:pointer; word-wrap:break-word";>'+component+'</span></li>');
	                });
	                $('.es-list').fadeIn();
	        		showItemMenu($('#affectedComponentsFind'), $('.es-list'));
	            }
	        }   
	    });
	}
	
	function showItemMenu(input, list){
		list.css({
			top:   input.position().top + input.outerHeight() - 1,
			left:  input.position().left+5,
			width: input.outerWidth()
		});
		list.fadeIn("fast");
	}
	
	function getComName(item){
		var componentOldName;
		var componentNewName = $(item).text();
		var value;
		
		var text = $('#affectedComponentsFind').val();
		if (text.indexOf(";") != -1){//得到每次输入的值,如果是第一次输入直接添加“;”,如果不是,截取最后一个分号之前的所有数据
			componentOldName = text.substring(0,text.lastIndexOf(";"));//取最后一个分号之前的所有数据
			if(componentOldName.indexOf(componentNewName) != -1){//如果之前有重复的立马报错
				$.alert({
                    title: 'WARNING',
                    content: 'Please do not enter duplicate fields!',
                    autoClose: 'ok|5000'
                });
			value = componentOldName + ";"
			}
			else{
				value = componentOldName + ";" + componentNewName + ";";
			}
			
		}else{
			value = componentNewName + ";";
		}
		
		$('#affectedComponentsFind').val(value);
		$('#affectedComponentsFind').attr('title', value);
		$('.es-list').fadeOut();		
	}
	
	function highlightCom(item){
		$('.com_li').css('background','#fff');
		$(item).css('background','#ccc');
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值