重写select控件

 

// 采用控件替换的办法,解决select控件不能输入的问题。

// IE 5.5才支持onfocusout事件!

// 使用class selecteditctrl 控制替换selectinput text控件的版式

// 如果该select为可编辑的,并且值不在选项中,则使用title="xxxxx"来赋值

///判断浏览器版本

window["MzBrowser"]={};(function()

{

  if(MzBrowser.platform) return;

  var ua = window.navigator.userAgent;

  MzBrowser.platform = window.navigator.platform;

 

  MzBrowser.firefox = ua.indexOf("Firefox")>0;

  MzBrowser.opera = typeof(window.opera)=="object";

  MzBrowser.ie = !MzBrowser.opera && ua.indexOf("MSIE")>0;

  MzBrowser.mozilla = window.navigator.product == "Gecko";

  MzBrowser.netscape= window.navigator.vendor=="Netscape";

  MzBrowser.safari  = ua.indexOf("Safari")>-1;

 

  if(MzBrowser.firefox) var re = /Firefox(/s|//)(/d+(/./d+)?)/;

  else if(MzBrowser.ie) var re = /MSIE( )(/d+(/./d+)?)/;

  else if(MzBrowser.opera) var re = /Opera(/s|//)(/d+(/./d+)?)/;

  else if(MzBrowser.netscape) var re = /Netscape(/s|//)(/d+(/./d+)?)/;

  else if(MzBrowser.safari) var re = /Version(//)(/d+(/./d+)?)/;

  else if(MzBrowser.mozilla) var re = /rv(/:)(/d+(/./d+)?)/;

 

  if("undefined"!=typeof(re)&&re.test(ua))

    MzBrowser.version = parseFloat(RegExp.$2);

})();

 

if (!SelDropdownPicturePath) {

  var SelDropdownPicturePath = "../../App_Themes/Default/Images/";

}

 

var oPopup = window.createPopup();

var WBSelectArray = new Array();

 

function WBSelect(innerhtml,xl,yl,edit,select)

{

  this.innerhtml = innerhtml;

  this.xl = xl;

  this.yl = yl;

  this.edit = edit;

  this.select = select;

}

 

//pop dropdown

function DropDown(index) {

  with (WBSelectArray[index]) {

    oPopup.document.body.innerHTML = innerhtml;

    oPopup.show(0, edit.offsetHeight, xl, yl,edit);

   

    // 截断过长的,以hint形式显示

    var obj = oPopup.document.body.children(0).children(0);

    while (obj) {

      if (obj.offsetWidth > xl) {

        obj.style.textOverflow = "ellipsis";

        obj.style.overflow = "hidden";

        obj.title = obj.innerText;

        obj.style.pixelWidth = xl - 16;

      }

      obj = obj.nextSibling;

    }

  }

}

 

// 选中下拉框中的选项

function DoSelect(i,ii)

{

  oPopup.hide();

  with (WBSelectArray[ii]) {

    edit.value = select.options(i).text;

    edit.select();

    edit.focus();

    if (select.selectedIndex != i) {

      select.selectedIndex = i;

      select.fireEvent("onchange");

    }

  }

}

 

// submit时取值

function DoSubmit()

{

  var frm = window.event.srcElement;

  var obj,sel,edit,_edit;

  var oOption;

 

  for (var j=0;j<frm.elements.length;j++) {

    obj = frm.elements(j);

    if ((obj.tagName=="SELECT")&&(obj.className=="selectedit"))

    {

      edit = frm.elements("E_"+obj.id);

      _edit=frm.elements(obj.id+"_E");

      if (obj.selectedIndex>=0) {

        oOption = obj.options(obj.selectedIndex);

      } else { // 无选项

        var oOption = document.createElement("OPTION");

        oOption.selected = true;

        obj.options.add(oOption);

      }

      if (edit.value!=oOption.text)

      {

        if(_edit!=null)

          _edit.value=edit.value;     

        else

          _edit.value=oOption.value;     

       

      }

      else

      {

         if(_edit!=null)

           _edit.value=oOption.value;     

      }

    }

  }

}

// replace origion "Select"

function ReplaceSelect(select) {

  select.style.display="none";

  var parent=select.parentElement;

 

  var container=document.createElement("DIV");

  with (container.style)

  {

    pixelWidth = select.style.pixelWidth;

    if (pixelWidth==0) pixelWidth=select.clientWidth;

    //修改div显示属性,以便让ReportViewer中的控件能够正确显示位置

//    pixelWidth=pixelWidth;

    pixelHeight = select.style.pixelHeight+20;//zhaofc 10/31/07

    if (pixelHeight==0) pixelHeight=select.clientHeight;

    //pixelHeight=pixelHeight-4;

    verticalAlign ="middle";

    container.align="left";

//    pixelLeft = select.style.pixelLeft;

//    pixelTop = select.style.pixelTop;

    pixelTop = 2;

    position = select.style.position;

  }

  parent.insertBefore(container,select);

 

  //创建edit控件

  var edit=document.createElement("input");

  // 修改容器宽度属性,以便让ReportViewer中的控件能够正确显示位置

  edit.style.pixelWidth = container.style.pixelWidth-6;

  edit.style.position="absolute";

  edit.className = "selecteditctrl";

  edit.tabIndex=select.tabIndex;

  if (select.selectedIndex>=0)

    edit.value = select.options(select.selectedIndex).text;

  if (select.className!="selectedit")

    edit.readOnly = true;

  else if (select.title!="") edit.value = select.title;

   

  edit.disabled=select.disabled; 

  edit.id = "E_"+select.id;

  container.appendChild(edit);

 

 

  //下拉框创建

  var ColorOver="#3CA7D5";//zhaofc 10/31/07

  var ColorOut="#E1F3FD";//zhaofc 10/31/07

  var len=select.options.length;

  var ii=WBSelectArray.length;

 

  var pixelheight = 16;

   // 下拉框高度

  var overflowy="hidden";

 

  if (len!=0) {

    if (len<=6) pixelheight = len * 20 + 2;

    else {

      pixelheight = 6 * 20 + 2;

      overflowy="";

    }

  }

 

  // 下拉框宽度

  var xl = select.getAttribute('DropDownWidth');

  if (xl == null)

    xl = container.style.pixelWidth-1;

  else

    xl = Math.max(parseInt(xl),container.style.pixelWidth);

  var html='<DIV ' +

    'style="position:absolute;font-family:Arial,宋体; font-size:9pt;'+

    'overflow:scroll; overflow-x:hidden; scrollbar-base-color:#3CA7D5; '+

    'width:' + xl + ';height:' + pixelheight + ';overflow-y:' + overflowy + ';' +

    'color:#212121; border:1px solid #9FC5F6; cursor:hand; '+

    'SCROLLBAR-HIGHLIGHT-COLOR:#0f7d84; SCROLLBAR-ARROW-COLOR: white;scrollbar-darkshadow-color : #0f7d84;">';//zhaofc 10/31/07

  // 创建下拉框的内容

  for (var i=0;i<len;i++) {

    html += '<DIV οnmοuseοver="this.style.background='

          + "'" + ColorOver + "'" + '" '

          + 'οnmοuseοut="this.style.background='

          + "'" + ColorOut + "'" + '" '

          + 'NOWRAP STYLE="height:20px; background:' + ColorOut

          + '; border-bottom:1px solid #9FC5F6; padding-top:2px; padding-left:2px" '//zhaofc 10/31/07

          + 'οnclick="javascript:parent.DoSelect(' + i + ',' + ii + ');">'

          + select.options(i).text + '</DIV>';

  }

  html += '</DIV>';

 

  WBSelectArray[ii] = new WBSelect(html,xl,pixelheight,edit,select);

  // 创建下拉按钮

  imgLeft=edit.style.pixelWidth-13;

  var down=document.createElement(

    '<IMG SRC="'+SelDropdownPicturePath+'icon_dropdown.gif" border=0 ' +

    'style="z-Index:1;top:1px;position:relative;left:'+imgLeft+'px;margin-bottom:1px;vertical-align:top;cursor:hand" οnclick="DropDown(' + ii + ')">');

   

  down.disabled=select.disabled; 

  down.id = "D_"+select.id;   

  container.appendChild(down);

}

 

function onloadinit()

{

  var obj,frm,haveSelect,_edit;

  for (var i=0;i<document.forms.length;i++)

  {

    frm = document.forms(i);

       

    haveSelect = false;

    for (var j=0;j<frm.elements.length;j++)

    {

      obj = frm.elements(j);     

      if ((obj.tagName=="SELECT")&&(obj.size==0))

      {

        ReplaceSelect(obj);

        j++;  // 插入了一个Text

        haveSelect = true;

      }

    }

    if (haveSelect)

      frm.attachEvent("onsubmit",DoSubmit);

  }

}

 

window.attachEvent("onload",onloadinit);

 

function SetGridCheckBox(value)

{

    fm=document.forms[0]

    for(i=0;i<fm.length;i++)

    {

        e=fm.elements[i];

        if(e.id.indexOf("ckSelRecord")>0)

        {

           if(!e.disabled)

                e.checked=value;

        }

    }

      

}

//设置所有表格复选框的选中状态

 

function SetGridCheckBox(value)

{

    fm=document.forms[0]

    for(i=0;i<fm.length;i++)

    {

        e=fm.elements[i];

        if(e.id.indexOf("ckSelRecord")>0)

        {

           if(!e.disabled)

                e.checked=value;

        }

    }

      

}

//清除全选复选框

function ClearSelAllCheckBox()   

{

    fm=document.forms[0]

    for(i=0;i<fm.length;i++)

    {

        e=fm.elements[i];

        if(e.id.indexOf("ckSelAll")>0)

           e.checked=false;

    }

}

//检查是否有记录被选中

function checkRecSelState()

{

    fm=document.forms[0]

    var result=0;

    for(i=0;i<fm.length;i++)

    {

        e=fm.elements[i];

        if(e.id.indexOf("ckSelRecord")>0&&e.checked)

        {

            result=1;

            break;

        }

          

    }

    return result==1;

}

 

//删除按钮客户端事件方法

function delEvent(delHint)

{

    if(checkRecSelState())

    {

      // modify 2006-11-14  可以传入自定义删除提示

        //alert(delHint);

        if(delHint)

        return confirm(delHint);

        else

        return confirm("您确定要删除选中的记录吗?");

     }

    else

    {

       alert("请选择需要删除的记录!");

       return false;

    }

}

 

//全部删除按钮客户端事件方法

function delAllEvent()

{ 

  return confirm("您确定要删除所有记录吗?");  

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值