JSF自定义组件之一 HTML原型

46 篇文章 0 订阅
29 篇文章 0 订阅

       首先介绍一下准备开发该组件的原因:

       Web开发中经常遇到一些资料量较大的下拉框,这些下拉框会大大增加服务器发挥Response的容量,而有时用户甚至根本不需要用到这些下拉框,这样就严重影响了页面加载的性能,于是构思开发一个通过Ajax技术,在用户点击下拉框时才加载所需数据的组件,从而减少不必要的性能损失。

       本篇首先使用HTML实现该组件的功能,以便为后面Renderer JSF组件是提供一个雏形。

       因为要捕捉点击下拉框事件,加载数据,所以很明显,HTML所提供的Select控件,无法直接实现我们的目的,因为Select控件不支持下拉按钮的点击事件,并且无法用代码直接打开下拉列表,因此大致的构思是用一个文本框和层实现该功能,生成效果如下:

 

HTML代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Drop down list</title>
  6. <link rel="stylesheet" type="text/css" href="dropdownliststyle.css">
  7. <script type="text/javascript" src="dropdownlistscript.js"></script>
  8. </head>
  9. <body>
  10. <input type="text" id="DROPDOWN1_INPUT" name="DROPDOWN1_INPUT"
  11.     class="dropdown_input">
  12. <img src="" class="dropdown_button" id="DROPDOWN1_IMG"
  13.     name="DROPDOWN1_IMG" onclick="showSelector();">
  14. <br>
  15. <div id="DROPDOWN1_AREA" class="dropdown_area"><select
  16.     id="DROPDOWN1_SELECTOR" name="DROPDOWN1_SELECTOR" multiple="multiple"
  17.     class="dropdown_selector" onchange="giveValue();">
  18.     <option value="1">1</option>
  19.     <option value="2">2</option>
  20.     <option value="3">3</option>
  21.     <option value="4">4</option>
  22.     <option value="5">5</option>
  23.     <option value="6">6</option>
  24.     <option value="7">7</option>
  25.     <option value="8">8</option>
  26.     <option value="9">9</option>
  27.     <option value="10">10</option>
  28.     <option value="11">11</option>
  29.     <option value="12">12</option>
  30.     <option value="13">13</option>
  31.     <option value="14">14</option>
  32.     <option value="15">15</option>
  33. </select></div>
  34. </body>
  35. </html>

CSS代码如下:

  1. @CHARSET "UTF-8";
  2. .dropdown_button{
  3.     margin-left-20px;
  4.     width15px;
  5.     height15px;
  6. }
  7. .dropdown_area{
  8.     positionabsolute;
  9.     width200px;
  10.     height200px;
  11.     margin-top-3px;
  12.     displaynone;
  13.     overflowauto;
  14. }
  15. .dropdown_input{
  16.     width200px;
  17. }
  18. .dropdown_selector{
  19.     width200px;
  20.     height200px;
  21. }

Javascript代码如下:

 

  1. function showSelector() {
  2.     var ea = document.getElementById("DROPDOWN1_AREA");
  3.     var input = document.getElementById("DROPDOWN1_INPUT");
  4.     ea.style.top = (input.style.top + 40);
  5.     ea.style.left = input.style.left;
  6.     ea.style.display = "block";
  7.     event.cancelBubble = true;
  8. }
  9. function revertValue() {
  10.     hiddenLayer();
  11. }
  12. function giveValue() {
  13.     document.getElementById("DROPDOWN1_INPUT").value = document
  14.             .getElementById("DROPDOWN1_SELECTOR").options[document
  15.             .getElementById("DROPDOWN1_SELECTOR").options.selectedIndex].value;
  16. }
  17. function hiddenLayer() {
  18.     document.getElementById("DROPDOWN1_AREA").style.display = "none";
  19. }
  20. document.onmouseup = revertValue;

下篇将介绍如何在该页面中加入Ajax功能。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值