`
senton
  • 浏览: 205975 次
  • 性别: Icon_minigender_1
  • 来自: 紫禁城
社区版块
存档分类
最新评论

用Javascript脚本写的一个全新的Select

    博客分类:
  • Web
阅读更多

由于系统自带的Select实在是不好用,这里我用javascript写了一个全新的Select.

功能:
  1.可编辑的Select
  2.长度可以随意修改
  3.可以遮盖系统Select
  4.支持forms
  5.支持CSS修改外观

使用方法
var 实体化变量=new editselect(名字,长度,默认字符串,宽度,高度,只读)
实体化变量.add(option数值)

这只是一个测试版,很多功能没有完善,比如没有区分value和caption等等,希望大家提出宝贵意见.

代码如下:

 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用Javascript编写的一个全新的Select >>webjx.com</title>
<script>
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;&#177;&#237;</div></div>'
document.write(scHTML)
vDiv=selectcontent
vDivHtml=selecthtml
function editselect(name,size,defaulttext,width,height,readonly){
  var combo=this;
  this.options=new Array();
  this.name=name;
  this.divname=name+'_div';
  this.buttonname=name+'_button';
  this.tablename=name+'_table';
  this.htmltable=name+'_html'
 
  if (!height) this.height=0; else this.height=height
  if (width) this.width=width
  if (!size) size=8
  if (!defaulttext) defaulttext=""
  if (!readonly || readonly==0) {readonly="" }else {if (readonly==1) readonly="readonly style=cursor:default";this.readonly=1}
 
  esHTML='<div id='+this.divname+'>'
         +'<table id='+this.tablename+' cellpadding=0 cellspacing=0 class=select><tr><td bgcolor=#FFFFFF>'
         +'<input type=text class=selecttext size="'+size+'" name='+name+' value="'+defaulttext+'" '+readonly+'><td><button class=selectbutton

id='+this.buttonname+'>6</td></tr></table>'
         +'</div>'
  document.write(esHTML)
  this.sbutton=eval("document.all."+this.buttonname)
 
  if (this.readonly==1) eval(this.name).onclick=function(){combo.show()} 
 
  this.sbutton.onclick=function(){combo.show()}
  this.show=function(){
    pDiv=eval(combo.divname)
    pTable=eval(combo.tablename)
    var vHTML='<table id=htmltable cellspacing="0" cellpadding="2" bgcolor="#ffffff" class="selecttable" width=100%>'
    for (i=0;i<combo.options.length;i++)
      {
       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]
      }
     vHTML+="</table>"
    vDivHtml.innerHTML=vHTML
   
    vtop=pDiv.offsetTop+pDiv.offsetHeight
    vleft=pDiv.offsetLeft+1
   
   
    vParent = pDiv.offsetParent;
     while (vParent.tagName.toUpperCase() != "BODY")
 {
  vleft += vParent.offsetLeft;
  vtop += vParent.offsetTop;
  vParent = vParent.offsetParent;
 }
   var redge=document.body.clientWidth-vleft
   var bedge=document.body.clientHeight-vtop
 
   
 if (!combo.width) {vDiv.style.width=pTable.offsetWidth} else {vDiv.style.width=combo.width}
   
    if (combo.height==0)
      {
        vDiv.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
        vDivHtml.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
      }
      else
      {
         if (htmltable.offsetHeight>combo.height)
          {
            vDiv.style.pixelHeight=combo.height
            vDivHtml.style.pixelHeight=combo.height
            }
           else
           {
         
              vDiv.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
              vDivHtml.style.pixelHeight=parseInt(htmltable.offsetHeight)+2
           }
  
       }
   
    vDivHtml.scrollTop=0
   
    if (redge<vDiv.offsetWidth)
      vDiv.style.left=vleft-1-(vDiv.offsetWidth-redge)
        else
      vDiv.style.left=vleft-1
     
   if (bedge<vDiv.offsetHeight)
    //vDiv.style.top=vtop-vDiv.offsetHeight-pDiv.offsetHeight
    vDiv.style.top=vtop-vDiv.offsetHeight+bedge
         else
      vDiv.style.top=vtop
     
   
    vDivHtml.style.width=parseInt(vDiv.style.width)
      vDiv.style.visibility="visible"
  }
 
  this.add=function(text){
     combo.options[combo.options.length]=text
  }
 
  this.about=function(){
 
 }
}
function mo(obj){
obj.style.backgroundColor="#000099"
obj.style.color="#ffffff"
}
function mu(obj){
obj.style.backgroundColor=""
obj.style.color="#000000"
}
document.onmousedown=function(){
if (vDiv.style.visibility=="visible"){
mx=event.x + document.body.scrollLeft
my=event.y + document.body.scrollTop;
x1=vDiv.offsetLeft
y1=vDiv.offsetTop
x2=vDiv.offsetLeft+vDiv.offsetWidth
y2=vDiv.offsetTop+vDiv.offsetHeight
if (mx<x1 || my<y1 || x2<mx || y2<my)
   {
     vDiv.style.visibility='hidden'
   }
}
}
</script>
<style>
.selecttext{
border:0px
height: 16;
font-family:arial;
font-size:12px;
}
.selectbutton{
font-family:webdings;
font-size:10px;
height: 19;
width: 16;
border:1px solid #83A5EB;
line-height:0px;
padding-bottom:3px;
background-color:#D1E0FD
}
.selecttable{
font-family:arial;
font-size:12px;
cursor:default;
}
.selectcontent
{
position: absolute;
top:0;
left:0;
overflow:auto;
border:1px solid #000000
}
.selectdiv
{
position: absolute;
width:100;
overflow:hidden;
}
.select{
border-collapse: collapse;
border:1px solid #7F9DB9
}
</style>
</head>
<body bgcolor="#83A5EB">
<table border="0" width="100%">
 <tr>
  <td width="151" align="center"><font size="2">可编辑的Select</font></td>
  <td><script>
var sel1=new editselect("select1","25","可编辑的Select","");
sel1.add("这是一个可以编辑的Select")
sel1.add("支持CSS")
sel1.add("可以通过CSS,修改外形")
sel1.add("突破原来的Select诸多限制")
</script></td>
 </tr>
 <tr>
  <td width="151" align="center"><font size="2">长度可以随意修改<br>可以设置为只读</font></td>
  <td>
  <script>
var sel2=new editselect("select2","20","长度可以随意修改",250,82,1);
sel2.add("这是一个可以编辑的Select")
sel2.add("支持CSS")
sel2.add("可以通过CSS,修改外形")
sel2.add("作者:舜子制作")
sel2.add("MSN:puterjam@msn.com")
</script>
  </td>
 </tr>
 <tr>
  <td width="151" align="center"><font size="2">可以遮盖系统Select</font></td>
  <td>
  <script>
var sel3=new editselect("select3","25","可以遮盖系统Select","",41);
sel3.add("这是一个可以编辑的Select")
sel3.add("支持CSS")
sel3.add("可以通过CSS,修改外形")
sel3.add("突破原来的Select诸多限制")
</script>
  </td>
 </tr>
 <tr>
  <td width="151" align="right"> </td>
  <td><select><option>系统的Select</option></select> </td>
 </tr>
</table>
</body>
</html>

分享到:
评论

相关推荐

    实用JavaScript脚本代码大全

    如果想让用户看到一个“查看源代码”的按钮,点击后能够自动跳转到查看源代码的页面,可以使用以下HTML代码: ```html 点击查看源代码" onclick="window.location='view-source:'+'http://www.example.com/'"&gt; ``` ...

    一个select下拉的js脚本

    在JavaScript(JS)中,`select`元素是HTML中用于创建下拉列表的标签。它经常与`option`标签一起使用,为用户提供多个可选择的选项...阅读这两个文件将有助于你更好地理解和应用这个`select`下拉列表的JavaScript脚本。

    自我介绍与javascript脚本

    6. `9.6_1_脚本特效`:这个文件名看起来像是某个章节或课程的一部分,可能是一个JavaScript脚本特效的实例或练习。 综合以上信息,这个压缩包内容涵盖了个人的自我宣传材料和JavaScript编程的学习资源,对于想了解...

    JavaScript最新全国各省、市、县联动Select脚本

    JavaScript三级联通实现最新全国各省、市、县联动Select脚本,数据为最新全国全国各省、市、县数据,纯JavaScript实现。 部分代码如下: //这是从国家统计局网站下载的全国行政区划代码,先把他转化为JSON对象, //...

    JSPjavascript脚本邮箱、密码、用户名验证.pdf

    在`&lt;head&gt;`标签中,我们可以看到一个 `&lt;script&gt;`标签,它用于链接一个外部JavaScript文件`shiyan 2.js`,该文件用于定义页面的JavaScript脚本。 表单验证 在这个示例中,我们可以看到一个表单验证的示例,该表单...

    Javascript常用脚本归类

    ### JavaScript常用脚本知识点解析 #### 一、禁用右键菜单 **代码示例:** ```javascript oncontextmenu="window.event.returnValue=false" ``` **解析:** 这段代码的作用是阻止用户在网页上通过鼠标右键弹出...

    省市区联动javascript脚本

    每个选择框都需要一个ID以便于JavaScript操作。 3. **JavaScript初始化**:在页面加载完成后,根据数据填充省份选择框。当用户选择一个省份时,触发事件,清除城市和区县的选项,然后根据所选省份的数据填充城市...

    40种网页常用脚本(javascript)

    该脚本确保当前页面只能在一个单独的窗口或顶级框架中加载,防止被其他框架嵌套。 ### 10. 无脚本环境下的替代方案 ```html *.html"&gt;&lt;/iframe&gt; ``` 如果浏览器不支持JavaScript,那么会显示`noscript`标签内的...

    用javascript实现select的美化的方法

    2. 使用脚本找到 Select 标签在网页上的绝对位置,并在该位置上用 DIV 标签创建一个假的 Select 标签。 3. 读取 Select 标签中的值,并将其应用到假的 Select 标签中。 4. 当用户点击假的 Select 标签时,浮动出一个...

    JQ JS javascript bootstrap 带搜索 下拉框 select

    `JQ`或`jQuery`是基于JavaScript的一个库,它简化了DOM操作、事件处理、动画效果和Ajax交互。jQuery使得开发者能够用更少的代码完成更多的功能,提高了开发效率。例如,通过简单的`$("#elementID").click(function()...

    Asp.Net从零开始27(javascript脚本的经典应用)

    上述代码会在页面加载时弹出一个包含字符串`"你好,张三丰"`的警告框。 ##### 3.2 让TextBox获得焦点 为了让页面加载后自动将焦点设置到某个文本框上,可以使用以下代码: ```csharp Page.RegisterStartupScript("...

    写了个jquery select 插件

    标题 "写了个jquery select 插件" 暗示了我们正在讨论一个使用jQuery库创建的自定义下拉选择框插件。这个插件可能是为了改进原生HTML `&lt;select&gt;` 元素的功能和外观,提供更丰富的交互和定制化选项。 在描述中提到的...

    基于Autojs 京东一键自动退货脚本

    6. **悬浮运行脚本按钮**:悬浮运行脚本按钮.js可能是一个实现脚本始终在屏幕上的悬浮小部件,让用户随时触发退货流程。创建悬浮按钮,监听其点击事件,然后执行退货脚本。 ```javascript var悬浮按钮 = new ...

    JQ JS javascript layui UI框架 带搜索下拉框 select

    本示例中,"JQ JS javascript layui UI框架 带搜索下拉框 select" 是一个基于jQuery和layui的特定功能实现,即在layui的UI设计中创建了一个具有搜索功能的下拉选择框。这个功能在许多网页应用中都很常见,例如在表单...

    用javascript和css模拟select的脚本

    在提供的内容片段中,展示了如何使用JavaScript来创建一个核心对象,用于操作DOM。核心对象`zQuery`的定义部分可以让我们推测: - 该代码可能是一个轻量级的JavaScript框架,类似于jQuery,但是专为处理这个模拟...

    HTML可输可选下拉框实现的JavaScript脚本

    1. 创建一个`&lt;select&gt;`元素和一个`&lt;input&gt;`元素,将它们组合成一个可编辑的下拉框。 2. 使用`addEventListener`方法为`&lt;input&gt;`元素绑定`keyup`事件,当用户在输入框中键入字符时,触发处理函数。 3. 在处理函数内部...

    用javascript模拟select达到美化效果

    实现思路 第一步:将表单中的select隐藏起来。 为什么?很简单,因为这家伙太顽固了,用css根本搞不出来你想要的。所以把它杀掉。...我们再用一个div浮在上一个div的下边,这个就是options的替身了。

    JavaScript对Select的操作.doc

    使用`document.createElement("select")`可以创建一个新的`&lt;select&gt;`元素。接着通过`id`属性设置其唯一标识,并用`appendChild()`将其添加到文档的指定位置,例如文档体(`document.body`)。 ```javascript ...

    Jquery实现省市区/县三级联动的Javascript脚本

    Jquery实现省市区/县三级联动的Javascript脚本

    php数据库连接代码,html创建窗口代码,javascript脚本文.pdf

    在上面的代码中,我们使用了 `&lt;frameset&gt;` 标签来创建一个框架网页,包括顶部框架、内容框架和底部框架。 JavaScript 脚本 JavaScript 是一种广泛使用的脚本语言,用于添加交互性到网页中。在本文档中,我们使用了...

Global site tag (gtag.js) - Google Analytics