• js控制添加文本框


    项目中碰到需要在前台动态加入文本框的问题,在参考163邮件里面带的js,我做了自己的修改和调整。列举代码如下 
    // JScript 文件

    // 增加option函数,增加到 idoptionspan,基数为 attaIdx 。


    var optionids = new Array(); //option的id集合
    var optionvalues = new Array();//option的value集合

    var opIdx = 0;
    var IsIE;

    //测试浏览器是否为ie
    function fInitMSIE(){
        if (navigator.userAgent.indexOf("MSIE") != -1){
            IsIE = true;
        }
        else{
            IsIE = false;
        }
    }

    fInitMSIE();

    function add() {

     addoption("idoptionspan",opIdx);
     opIdx++;
     return false;
    }

    function exist(Id) {
          var txtoption = document.getElementById(Id);
       var result = false;
       if ( txtoption !=null ) {
       result = true;
       }
       if( result)
       {
      alert("系统异常,请刷新该页面");
       }
    }//end of function

    //delete the both sides space
    function lrtrim(lchar)     
    {  
     var li,ri,l_i,r_i,returnvalue;
     returnvalue="";
     for(li=0;li<lchar.length;li++)
     {
      if(lchar.substring(li,li+1)!=" ")
      {
       l_i=li;
       break;
      }
      
     }
     for(ri=lchar.length;ri>0;ri--)
     {
      if(lchar.substring(ri-1,ri)!=" ")
      {
       r_i=ri;
       break;
      }
      
     }
     returnvalue=lchar.substring(l_i,r_i);
     return(returnvalue);
    }

    //addoption(spanId,index) 普通增加选项,spanId是容器id,index实际是个数。
    function addoption(spanId,index)
    {
           var strIndex = "" + index;
        var optionId = "option"+ strIndex;
        var brId = "idOptionBr" + strIndex;
        addoptioncontrol(spanId,optionId);

        adddel(spanId,index);

        addbr(spanId,brId);
        //document.getElementById( "attachfile"+ strIndex).click();
        return;
    }
    //end function

    // 添加选项文本框和标签 addoptioncontrol(spanId,optionId) spanId是容器id,optionId是文本框的id由index产生
    function addoptioncontrol(spanId,optionId)
    {
       var span = document.getElementById(spanId);
       if ( span !=null ) {
        var oTextNode = document.createElement("SPAN");
            oTextNode.id = "idTitle"+optionId.substr(6,8);
       oTextNode.style.width = "40px";
       oTextNode.innerText = '选项  ';
       span.appendChild(oTextNode);
                     if ( !IsIE ) {
          var optionObj = document.createElement("input");
          if ( optionObj != null ) {
           optionObj.type="text";
           optionObj.name = optionId;
           optionObj.id = optionId;
           optionObj.size="50";
           optionObj.oindex = optionId.substr(6,8);
           //var clickEvent = "exist('" + optionId + "')";
           //fileObj.setAttribute("onclick",clickEvent,0); 
           span.appendChild(optionObj);
          }//if fileObj
         }// !IsIE

         if ( IsIE ) {
          var optionTag = "<input type='text' id ='" + optionId + "'oindex='"+optionId.substr(6,8)+" name='" + optionId + "' size=160px />";
          var optionObj = document.createElement(optionTag);
          span.appendChild(optionObj);
         }//IsIE if
       
       }//if span
    }//end function

    // 添加删除按钮以及绑定 删除按钮的单击事件
    function adddel(spanId,index)
    {
          var strIndex = "" + index;
       var delId = "idOper" + strIndex;
       var span = document.getElementById(spanId);
       if ( span != null ) {
       var oTextNode = document.createElement("SPAN");
       oTextNode.style.width = "5px";
       span.appendChild(oTextNode);
          if ( IsIE ) {
             var tag = "<input type='button' id='" + delId + "' onclick=deloption('" + spanId + "',"+strIndex+")></input>";
       var delObj = document.createElement(tag);
       if ( delObj != null ) {
        span.appendChild(delObj);
       }//if

       }// Is IE
       
             if ( !IsIE ) {
        var delObj = document.createElement("input");
        if ( delObj != null ) {
         delObj.name = delId;
         delObj.id = delId;
         delObj.type = "button";
         var clickEvent = "return deloption('" + spanId + "',"+strIndex+");";
         delObj.setAttribute("onclick",clickEvent); 
         span.appendChild(delObj);
        }//if
       }// !IsIE if
       if( delObj != null) delObj.value = "删除";
      }//main if
      return;
    }//end function

    //删除一个选项相关的所有控件(文本框,标签,一个br,一个删除按钮)
    function deloption(spanId,index)
    {
        var strIndex = "" + index;
        var optionId = "option"+ strIndex;
        var brId = "idOptionBr" + strIndex;
        var delId = "idOper" + strIndex;
        var titleId = "idTitle" +strIndex;
        //first,get the element
           var span = document.getElementById(spanId);
        //alert(  "del span: " + span  );
        if ( span == null ) return false;

        var optionObj = document.getElementById(optionId);
        if ( optionObj == null ) return false;

        var brObj = document.getElementById(brId);
        if ( brObj ==null ) return false;

        var delObj = document.getElementById(delId );
        //alert(  "del delId: " + delObj  );
        if ( delObj == null ) return false;

           //second,create the replace element
        var temp= document.createElement("SPAN");
        //third,replace it
         span.removeChild(optionObj.previousSibling);
         span.replaceChild(temp,optionObj);
      span.replaceChild(temp,brObj);
      // Added by Harry, Repair Remove attached bug 2005/04/04
      span.removeChild(delObj.previousSibling);
      //var attach = document.getElementById("attach");
      //if(span.getElementsByTagName("INPUT").length == 1) attach.childNodes[0].nodeValue='添加附件';
      // End
      span.replaceChild(temp,delObj); 
      opIdx  = opIdx-1;
      return false;
    }// end function

    //check data if is null
    function check_null(tCHAR)   
    {
     aa=false;
     
     for(iINT=0;iINT<tCHAR.length;iINT++)
        {           
            if(tCHAR.substring(iINT,iINT+1)!=" ") 
      {
          aa=true;
       break;
      }
     }
      
     if(aa==false || tCHAR.length<1)
     {
      return false;
     }

     return true;  
    }


    //得到所有选中的选项的值,如果选项文本框不是后台数据库的数据产生则加入到隐藏域,否则更改或添加相应域。
    function getoptionvalue()
    {
          var str = '';
          var oSpan = document.getElementById("idoptionspan");
       if(oSpan){
      var options = oSpan.getElementsByTagName("INPUT");
      for(var i=0,m=options.length;i<m;i++){
       if(options[i].type == "text" && options[i].value !=""){
              if((!check_null(options[i].value))||(options[i].value =="undefined"))
              {
                 document.getElementById("hiddOptionID").value="";
                 document.getElementById("hiddOptionValue").value="";
                 document.getElementById("hiddenElse").value = "";
                 alert("选项名称不能为空,请删除该项或者填写选项名称");
                 break;
              } 
           if(options[i].useron !=null)
             setNewValueByID(options[i].id,lrtrim(options[i].value));
           else
            {
               if(str == '')
               {
                   str = lrtrim(options[i].value);
               }
               else
               {
                   str = str+"`"+lrtrim(options[i].value);
               }
            }
       }
      }
       if(optionids.length >0)
         document.getElementById("hiddOptionID").value=JoinStr(optionids);
       if(optionvalues.length>0)
         document.getElementById("hiddOptionValue").value=JoinStr(optionvalues);
       document.getElementById("hiddenElse").value = str;
     }
    }//end function

    function setNewValueByID(id,value)
    {
       for(var i=0;i<optionids.length;i++)
       {
          if(optionids[i] == id)
          {
             optionvalues[i] = value;
             break;
          }
       }
    }

    function JoinStr(arr)
    {
       var str='';
       for(var i=0;i<arr.length;i++)
       {
          if(str=='')
            str = lrtrim(arr[i]);
          else
            str = str+'`'+lrtrim(arr[i]);
       }
       return str;
    }

    //------------------------根据后台数据库添加选项控制-------------------
    function SetDBOption()
    {
        var arrOptionID = document.getElementById('hiddOptionID').value.split('`');
     
        var arrOptionValue = document.getElementById('hiddOptionValue').value.split('`');

       var optionLength= arrOptionID.length;
       var optionID;
       var optionValue;
       var strIndex ;
       var brId;
      // alert("xxxx");
       for(var i=0;i<optionLength;i++){
          opIdx = opIdx + 1;
          optionID =arrOptionID[i];
          optionValue = arrOptionValue[i];
          addUserOption('idoptionspan',optionID,optionValue);
         
          strIndex = ""+opIdx;
          adddbdel('idoptionspan',opIdx,optionID);
          brId = "idDBBr" + strIndex;
          addbr('idoptionspan',brId);
         
         
       }
    }
    //------------------------end function-------------------


    //-----------------------------------根据后台db数据库加载option------------------------
    function addUserOption(spanId,optionId,optionvalue)
    {
        var span = document.getElementById(spanId);
       if ( span !=null ) {
        var oTextNode = document.createElement("SPAN");
            oTextNode.id = "idTitle"+""+opIdx;
       oTextNode.style.width = "40px";
       oTextNode.innerText = '选项  ';
       span.appendChild(oTextNode);
                     if ( !IsIE ) {
          var optionObj = document.createElement("input");
          if ( optionObj != null ) {
           optionObj.type="text";
           optionObj.name = optionId;
           optionObj.id = optionId;
           optionObj.value = optionvalue;
           optionObj.size="50px";
           optionObj.useron = "1";
           //var clickEvent = "exist('" + optionId + "')";
           //fileObj.setAttribute("onclick",clickEvent,0); 
           span.appendChild(optionObj);
          }//if fileObj
         }// !IsIE

         if ( IsIE ) {
          var optionTag = "<input type='text' id ='" + optionId + "' name='" + optionId + "' useron='1' size=50px value='"+optionvalue+ "'  />";
          var optionObj = document.createElement(optionTag);
          span.appendChild(optionObj);
         }//IsIE if
       
       }//if span
    }
    //-----------------------------------end function------------------------

    function addbr(spanId,brId)
    {
       var span = document.getElementById(spanId);
       if ( span !=null ) {
       var brObj = document.createElement("br");
       if ( brObj !=null ) {
        brObj.name = brId;
        brObj.id = brId;
        
        span.appendChild(brObj);
                }//if
         }//if
      return;
    }

    //-------------------------------------------------------------------------------------------------------------


    function adddbdel(spanId,index,optionid)
    {
       var strIndex = "" + index;
       var delId = "idOper" + strIndex;
       var span = document.getElementById(spanId);
       if ( span != null ) {
       var oTextNode = document.createElement("SPAN");
       oTextNode.style.width = "5px";
       span.appendChild(oTextNode);
          if ( IsIE ) {
             var tag = "<input type='button' id='" + delId + "' onclick=deluseroption('" + spanId + "',"+strIndex+",'"+optionid+"')></input>";
       var delObj = document.createElement(tag);
       if ( delObj != null ) {
        span.appendChild(delObj);
       }//if

       }// Is IE
       
             if ( !IsIE ) {
        var delObj = document.createElement("input");
        if ( delObj != null ) {
         delObj.name = delId;
         delObj.id = delId;
         delObj.type = "button";
         var clickEvent = "return deluseroption('" + spanId + "',"+strIndex+",'"+optionid+"');";
         delObj.setAttribute("onclick",clickEvent); 
         span.appendChild(delObj);
        }//if
       }// !IsIE if
       if( delObj != null) delObj.value = "删除";
      }//main if
      return;
    }


    //---------------------------------------------根据后台数据库数据删除按钮-------------------
    function deluseroption(spanid,index,optionID)
    {
       if(!window.confirm('您确定要彻底删除该选项?'))
         return false;
        var strIndex = "" + index;
        var brId = "idDBBr" + strIndex;
        var delId = "idOper" + strIndex;
        var span = document.getElementById(spanid);
        //alert(  "del span: " + span  );
        if ( span == null ) return false;
        var optionObj = document.getElementById(optionID);
        if ( optionObj == null ) return false;  
        var brObj = document.getElementById(brId);
        if ( brObj ==null ) return false;
     var delObj = document.getElementById(delId );
        //alert(  "del delId: " + delObj  );
        if ( delObj == null ) return false;
       
     var temp= document.createElement("SPAN");
        //third,replace it
     
        span.removeChild(optionObj.previousSibling);
     span.replaceChild(temp,optionObj);
        span.replaceChild(temp,brObj);
      // Added by Harry, Repair Remove attached bug 2005/04/04
     span.removeChild(delObj.previousSibling);
      //var attach = document.getElementById("attach");
      //if(span.getElementsByTagName("INPUT").length == 1) attach.childNodes[0].nodeValue='添加附件';
      // End
     span.replaceChild(temp,delObj); 
     
     var del = document.getElementById('hiddenDel');
     if(del.value != '')
        del.value = optionID;
     else
        del.value = del.value + ','+optionID;
     
     opIdx  = opIdx-1;
     return false;
    }
    //---------------------------------------------根据后台数据库数据删除按钮-------------------

  • 相关阅读:
    可扩展多线程异步Socket服务器框架EMTASS 2.0
    认识迅雷界面引擎
    C语言 二维数组(指针)动态分配和释放(转)
    二维数组与双重指针(转)
    VC++6 调用teststand api的方法
    [VC6] 小谈如何解决VC6.0 open崩溃的问题(已解决)(转)
    Linux下C与Mysql的混合编程(转)
    VS2010生成安装包制作步骤 (转)
    SAO总结
    JS OOP编程
  • 原文地址:https://www.cnblogs.com/ocean2000/p/795172.html
Copyright © 2020-2023  润新知