點選文字框彈出可供選擇的checkbox核取方塊程式碼例項

antzone發表於2017-03-18

本章節分享一段程式碼例項,它能夠點選文字框的時候,能夠彈出下拉的checkbox核取方塊,選中核取方塊就能夠將值寫入文字框中,可能在實際應用中的效果沒有這麼直白簡單,不過可以作為一個例子演示,以便於學習者理解和擴充套件。

程式碼如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#div{
  margin-bottom:10px;
  position:relative;
}
#div1{
  width:153px;
  padding-top:0px;
  padding-left:0px;
  position:absolute;
}
#div1 ul{
  margin-top:0px;
  padding-left:0px;
  background-color:#ccc;
  list-style:none;
}
#div1 ul li{
  padding-left:0px;
}
#div1 ul li input{
  margin-left:15px;
}
.close{
  display:none;
}
.open{
  display:block;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(function(){ 
  var position=$("#xx").offset(); 
  $("#div1").offset({ 
    top:position.top+22,
    left:position.left
  }); 
  $("#xx").click(function(){ 
    $("#NG").toggleClass("open"); 
  });
  $("#div1 input[name=ng]").click(function(){ 
    var arr=new Array(); 
    $("input[name=ng]:checked").each(function(key,value){
     arr[key]=$(value).val();
    }); 
    $("#xx").val(arr.join(",")); 
  }) 
}) 
</script>
</head>
<body>
<div id="div">
  <div align="center" id="div2" >
    <form id="form1">
      <input type="text" readonly="readonly" id="xx"/>
      <input type="submit" value="查詢"/>
    </form>
  </div>
  <div id="div1">
    <ul class="close" id="NG" >
      <li><input type="checkbox" name="ng" value=1 />1</li>
      <li><input type="checkbox" name="ng" value=2 />2</li>
      <li><input type="checkbox" name="ng" value=3 />3</li>
    </ul>
  </div>
</div>
</body>
</html>

以上程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

1.$(function(){}),當文件結構完全載入完畢再去執行函式中的程式碼。

2.var position=$("#xx").offset(),獲取文字框相對於document文件的偏移量,offset()函式返回的是一個物件,此物件包含兩個屬性left和top,分別表示相對於文件的水平和垂直偏移量。

3.$("#div1").offset({top:position.top+22,left:position.left}),設定彈出下拉選單容器的相對文件的偏移量,第一個加22是為了使其在文字框的下面顯示。

4.$("#xx").click(function(){$("#NG").toggleClass("open");}),為文字框註冊click事件處理函式,點選它可以切換樣式類open刪除和新增,也就是設定下拉選單的顯示和隱藏。

5.$("#div1 input[name=ng]").click(function(){ }),為name屬性值為ng的文字框註冊click事件處理函式。

6.var arr=new Array(),建立一個陣列,用來存放選中checkbox核取方塊的value值。

7.$("input[name=ng]:checked").each(function(key,value){arr[key]=$(value).val();}),將選中的核取方塊的值存入陣列。

8.$("#xx").val(arr.join(","));,將陣列元素連線成字串寫入文字框。

二.相關閱讀:

1.offset()函式可以參閱jQuery offset()一章節。 

2.toggleClass()函式可以參閱jQuery toggleClass()一章節。 

3.input[name=ng]可以參閱jQuery [attribute=value]一章節。 

4.each()函式可以參閱jQuery each()一章節。 

5.val()函式可以參閱jQuery val()一章節。 

6.join()函式可以參閱javascript join()一章節。

相關文章