angularJS 可编辑下拉选项框

功能介绍:

  该组件将文本框和下拉框的组合,当你点击最右边的下拉按钮,实现下拉框选择的功能;当你选中文本框,实现文本框输入的功能。将文本框和下拉框设置name属性一样他自动会把对应下拉框的值传入后台,而文本框的值不传,当你做文本框使用,它会把文本框的值传入后台而下拉框的值不传。


可编辑下拉选项框

1.html代码

 1 <!DOCTYPE html>
 2 <html ng-app="myapp">
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>可编辑下拉选项框</title>
 6         <script src="../../js/angular.min.js" type="text/javascript" charset="utf-8"></script>
 7         <script src="../js/edit_sel.js" type="text/javascript" charset="utf-8"></script>
 8         <link rel="stylesheet" type="text/css" href="edit_sel.css"/>
 9     </head>
10     
11     <body ng-controller="mycon">
12         <select class="sel" name="search" ng-focus="foChange(flt1)" ng-model="flt1" ng-change="ftl1Change(flt1)" ng-focus="foc">
13             <option  value=""></option>
14             <option  value="ANY">ANY</option>
15             <option  value="1" style="display: none;">1</option>
16         </select>*
17         <input class="inp" maxlength="4" type="text" required="required" 
18             ng-blur="chkNumber(fltNo1)" ng-model="fltNo1" ng-change="fltNo1Change(fltNo1)" />
19             <font color="red">&nbsp;*</font>
20             <span ng-model="tips">&nbsp;{{tips}}</span>
21     </body>
22 </html>

2.css样式引入

 1 .sel{
 2     width: 1.5%;
 3     position: relative;
 4     left: 11.5%;
 5     height:21px;
 6 }
 7 
 8 .inp{
 9     width: 10%;
10     position: relative;
11     left: -20px;
12 }

 

3.可编辑文本框下拉选项的js代码实现

angular.module("myapp",[]).controller("mycon",function($scope){
    var vm = $scope;
    // 下拉框change事件
    $scope.ftl1Change= function(flt1){
//        console.log(flt1);
        if(vm.flt1===""||vm.flt1==null){
            vm.fltNo1="";
        }else{
            vm.fltNo1="ANY";
        }
        
    };
    
    // 文本框输入 change事件
    $scope.fltNo1Change = function(fltNo1){
        vm.flt1 = fltNo1;
    };
    
    // 下拉框focus事件
    vm.foChange = function(flt1){
        vm.flt1 = "1";
    };
    
    // 校验是是否输入数据合法
    $scope.chkNumber=function(eleText){
         var value =eleText;
              for(var i=0;i<value.length;i++)  
              {
                     if(value.charAt(i)>"9"|| value.charAt(i)<"0")
                     {
                            vm.tips="输入非法字符!";
                            eleText.focus();
                            break;
                     }
              }
    };
});

/*
// html 原生的onblur事件校验
   <input type="text" id="d1" onblur=" chkNumber(this)"/>     
 function chkNumber(eleText)
 
       {
              var value =eleText.value;
              var len =value.length;
              for(var i=0;i<len;i++) 
              {
                     if(value.charAt(i)>"9"|| value.charAt(i)<"0")
                     {
                            alert("含有非数字字符");
                            eleText.focus();
                            break;
                     }
              }
       }
       
*/

 使用原生jquery实现 可编辑下拉选项框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>可编辑下拉选项框</title>
		<script src="../../js/jquery-3.2.1.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<style type="text/css">
		select{position: relative;left: -0.5em;height: 1.6em;border: 2px solid darkgray;}
		input{border: 2px solid darkgray;}
	</style>
	<script type="text/javascript">
		$(document).ready(function(){
			// 获得鼠标的事件:改变颜色
			$("#sel-age").mouseover(function(){
				$(this).css("background-color","palegreen");
			});
			// 鼠标离开标签的事件:改变颜色
			$("#sel-age").mouseout(function(){
				$(this).css("background-color","");
			});
			// 输入框获取下拉框选中的值
			$("#sel-age").change(function(){
				var sval = $(this).val();
				if(sval===""||sval===null||sval===undefined){
					$("#age").val("");
				}else{
					$("#age").val(sval);
				}
			});
			// 重要的一个步骤:设置select标签focus事件--获得焦点的时候,将下拉框默认选择一个空的选项
			$("#sel-age").focus(function(){
				//$("option[value='a']").prop('selected','true'); 
				$("#sel-age").val('a');
			});
		});
	</script>
	<body>
		<div>
			<label for="">min age:</label>
			<input type="text" id="age" maxlength="3" pattern="/^[0-9]{0,3}$/" />
			<select name="age" id="sel-age" >
				<option value=""></option>
				<option value="ANY">ANY</option>
				<option value="a" style="display: none;"></option>
			</select>
		</div>
	</body>
</html>

 

posted @ 2017-08-01 12:27  星空异皓`  阅读(1764)  评论(1编辑  收藏  举报
/*页脚固定*/