Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

个性化的Select

[复制链接]
hufanyun 发表于 2005-10-17 10:38:50 | 显示全部楼层 |阅读模式
1.可编辑的Select
2.长度可以随意修改
3.可以遮盖系统Select
4.支持forms
5.支持CSS修改外观

演示: http://www.twinsworld.org/ceshi.htm


以下代码加入<head>区域
  1. <script>
  2. scHTML='<div id="selectcontent" class="selectdiv" style="visibility:hidden;"><iframe id=selframe frameborder=0 height=100%></iframe><div id="selecthtml" class="selectcontent">select&Aacute;&ETH;±í</div></div>'
  3. document.write(scHTML)
  4. vDiv=selectcontent
  5. vDivHtml=selecthtml

  6. function editselect(name,size,defaulttext,width,height,readonly){
  7.   var combo=this;
  8.   this.options=new Array();
  9.   this.name=name;
  10.   this.divname=name+'_div';
  11.   this.buttonname=name+'_button';
  12.   this.tablename=name+'_table';
  13.   this.htmltable=name+'_html'
  14.   
  15.   if (!height) this.height=0; else this.height=height
  16.   if (width) this.width=width
  17.   if (!size) size=8
  18.   if (!defaulttext) defaulttext=""
  19.   if (!readonly || readonly==0) {readonly="" }else {if (readonly==1) readonly="readonly style=cursor:default";this.readonly=1}
  20.   
  21.   esHTML='<div id='+this.divname+'>'
  22.          +'<table id='+this.tablename+' cellpadding=0 cellspacing=0 class=select><tr><td bgcolor=#FFFFFF>'
  23.          +'<input type=text class=selecttext size="'+size+'" name='+name+' value="'+defaulttext+'" '+readonly+'><td><button class=selectbutton id='+this.buttonname+'>6</td></tr></table>'
  24.          +'</div>'
  25.   document.write(esHTML)
  26.   this.sbutton=eval("document.all."+this.buttonname)
  27.   
  28.   if (this.readonly==1) eval(this.name).onclick=function(){combo.show()}  
  29.   
  30.   this.sbutton.onclick=function(){combo.show()}
  31.   this.show=function(){
  32.     pDiv=eval(combo.divname)
  33.     pTable=eval(combo.tablename)
  34.     var vHTML='<table id=htmltable cellspacing="0" cellpadding="2" bgcolor="#ffffff" class="selecttable" width=100%>'
  35.     for (i=0;i<combo.options.length;i++)
  36.       {
  37.        vHTML+='<tr onmouseover="mo(this)" onmouseout="mu(this)" onclick="document.all.'+combo.name+'.value=this.innerText;selectcontent.style.visibility=\'hidden\'"><td nowrap>'+combo.options[i]
  38.       }
  39.      vHTML+="</table>"
  40.     vDivHtml.innerHTML=vHTML
  41.    
  42.     vtop=pDiv.offsetTop+pDiv.offsetHeight
  43.     vleft=pDiv.offsetLeft+1
  44.    
  45.    
  46.     vParent = pDiv.offsetParent;
  47.      while (vParent.tagName.toUpperCase() != "BODY")
  48. {
  49.   vleft += vParent.offsetLeft;
  50.   vtop += vParent.offsetTop;
  51.   vParent = vParent.offsetParent;
  52. }

  53.    var redge=document.body.clientWidth-vleft
  54.    var bedge=document.body.clientHeight-vtop

  55.    

  56. if (!combo.width) {vDiv.style.width=pTable.offsetWidth} else {vDiv.style.width=combo.width}
  57.    

  58.     if (combo.height==0)
  59.       {
  60.         vDiv.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
  61.         vDivHtml.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
  62.       }
  63.       else
  64.       {
  65.          if (htmltable.offsetHeight>combo.height)
  66.           {
  67.             vDiv.style.pixelHeight=combo.height
  68.             vDivHtml.style.pixelHeight=combo.height


  69.             }
  70.            else
  71.            {
  72.          
  73.               vDiv.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
  74.               vDivHtml.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
  75.            }
  76.    
  77.        }
  78.    
  79.     vDivHtml.scrollTop=0
  80.    
  81.     if (redge<vDiv.offsetWidth)
  82.       vDiv.style.left=vleft-1-(vDiv.offsetWidth-redge)
  83.         else
  84.       vDiv.style.left=vleft-1
  85.       

  86.    if (bedge<vDiv.offsetHeight)
  87.     //vDiv.style.top=vtop-vDiv.offsetHeight-pDiv.offsetHeight
  88.     vDiv.style.top=vtop-vDiv.offsetHeight+bedge
  89.          else
  90.       vDiv.style.top=vtop
  91.       
  92.    
  93.     vDivHtml.style.width=parseInt(vDiv.style.width)
  94.       vDiv.style.visibility="visible"
  95.   }
  96.   
  97.   this.add=function(text){
  98.      combo.options[combo.options.length]=text
  99.   }
  100.   
  101.   this.about=function(){
  102.   
  103. }
  104. }


  105. function mo(obj){
  106. obj.style.backgroundColor="#000099"
  107. obj.style.color="#ffffff"
  108. }

  109. function mu(obj){
  110. obj.style.backgroundColor=""
  111. obj.style.color="#000000"
  112. }

  113. document.onmousedown=function(){
  114. if (vDiv.style.visibility=="visible"){
  115. mx=event.x + document.body.scrollLeft
  116. my=event.y + document.body.scrollTop;

  117. x1=vDiv.offsetLeft
  118. y1=vDiv.offsetTop

  119. x2=vDiv.offsetLeft+vDiv.offsetWidth
  120. y2=vDiv.offsetTop+vDiv.offsetHeight

  121. if (mx<x1 || my<y1 || x2<mx || y2<my)
  122.    {
  123.      vDiv.style.visibility='hidden'
  124.    }
  125. }
  126. }
  127. </script>


  128. <style>
  129. .selecttext{
  130. border:0px
  131. height: 16;
  132. font-family:arial;
  133. font-size:12px;
  134. }
  135. .selectbutton{
  136. font-family:webdings;
  137. font-size:10px;
  138. height: 19;
  139. width: 16;
  140. border:1px solid #83A5EB;
  141. line-height:0px;
  142. padding-bottom:3px;
  143. background-color:#D1E0FD
  144. }
  145. .selecttable{
  146. font-family:arial;
  147. font-size:12px;
  148. cursor:default;
  149. }
  150. .selectcontent
  151. {
  152. position: absolute;
  153. top:0;
  154. left:0;
  155. overflow:auto;
  156. border:1px solid #000000
  157. }

  158. .selectdiv
  159. {
  160. position: absolute;
  161. width:100;
  162. overflow:hidden;
  163. }
  164. .select{
  165. border-collapse: collapse;
  166. border:1px solid #7F9DB9
  167. }
  168. </style>
复制代码

以下代码加入你想实现的地方
  1. <table border="0" width="100%">
  2. <tr>
  3.   <td width="151" align="center"><font size="2">可编辑的Select</font></td>
  4.   <td><script>
  5. var sel1=new editselect("select1","25","可编辑的Select","");
  6. sel1.add("这是一个可以编辑的Select")
  7. sel1.add("支持CSS")
  8. sel1.add("可以通过CSS,修改外形")
  9. sel1.add("突破原来的Select诸多限制")
  10. </script></td>
  11. </tr>
  12. <tr>
  13.   <td width="151" align="center"><font size="2">长度可以随意修改
  14. 可以设置为只读</font></td>
  15.   <td>
  16.   <script>
  17. var sel2=new editselect("select2","20","长度可以随意修改",250,82,1);
  18. sel2.add("这是一个可以编辑的Select")
  19. sel2.add("支持CSS")
  20. sel2.add("可以通过CSS,修改外形")

  21. </script>
  22.   </td>
  23. </tr>
  24. <tr>
  25.   <td width="151" align="center"><font size="2">可以遮盖系统Select</font></td>
  26.   <td>
  27.   <script>
  28. var sel3=new editselect("select3","25","可以遮盖系统Select","",41);
  29. sel3.add("这是一个可以编辑的Select")
  30. sel3.add("支持CSS")
  31. sel3.add("可以通过CSS,修改外形")
  32. sel3.add("突破原来的Select诸多限制")
  33. </script>
  34.   </td>
  35. </tr>
  36. <tr>
  37.   <td width="151" align="right"> </td>
  38.   <td><select><option>系统的Select</option></select> </td>
  39. </tr>
  40. </table>
复制代码

评分

1

查看全部评分

amoshuang 发表于 2005-10-17 10:48:27 | 显示全部楼层
抢沙发,哈哈
回复

使用道具 举报

oytktk 发表于 2005-10-17 10:52:02 | 显示全部楼层
晕...你那个页面全都是JS特效汗~~
回复

使用道具 举报

 楼主| hufanyun 发表于 2005-10-17 10:53:15 | 显示全部楼层
原帖由 oytktk 于 2005-10-17 10:52 发表
晕...你那个页面全都是JS特效汗~~

我现在就是玩JSP和JS
回复

使用道具 举报

amoshuang 发表于 2005-10-17 10:59:47 | 显示全部楼层
修改什么文件?css.htm?
回复

使用道具 举报

oytktk 发表于 2005-10-17 11:00:33 | 显示全部楼层
原帖由 hufanyun 于 2005-10-17 10:53 发表

我现在就是玩JSP和JS


早看出来了~~~呵呵...我现在已经不搞JS了...汗..找了烦~
回复

使用道具 举报

karl907 发表于 2005-10-17 11:03:16 | 显示全部楼层
不错不错!!!
回复

使用道具 举报

 楼主| hufanyun 发表于 2005-10-17 11:04:28 | 显示全部楼层
原帖由 oytktk 于 2005-10-17 11:00 发表


早看出来了~~~呵呵...我现在已经不搞JS了...汗..找了烦~

我现在要加深研究UINX,LINUX不玩了
回复

使用道具 举报

oytktk 发表于 2005-10-17 11:05:45 | 显示全部楼层
原帖由 hufanyun 于 2005-10-17 11:04 发表

我现在要加深研究UINX,LINUX不玩了


这有前途的哦!!继续努力哦!
回复

使用道具 举报

 楼主| hufanyun 发表于 2005-10-17 11:06:38 | 显示全部楼层
原帖由 oytktk 于 2005-10-17 11:05 发表


这有前途的哦!!继续努力哦!

呵呵~终于有了UNIX给我研究。这个就是我混进那个大学帮忙的原因
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-22 02:38 , Processed in 0.075350 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表