htm
-----------------------------------------
<style>
.select_edit { behavior:  url("comboBox.htc"); width:90px; }
</style>
<SELECT NAME="sel" id="sel" class="select_edit">
<option value=one>one</option>
<option value=two>two</option>
</SELECT>
comboBox.htc
-----------------------------------------
//  描述      : HTML ComboBox 可编辑下拉框
//  版本      : version 1.0
//  作者      : Jiangwf
//  最新更新  : 2004-4-17
//  备注      : 定位ComboBox必须放在一个固定大小的父结点
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="boxInit()" />
<PUBLIC:ATTACH EVENT="onchange" ONEVENT="setbox()" />
<PUBLIC:ATTACH FOR="window" EVENT="onresize" ONEVENT="setPosition()" />
<PUBLIC:METHOD NAME="setPosition"/><script language="JavaScript">
var selectBox, oSpan, oSpanSelect, oSpanInput, oInput;
var selectRect;
var oSpan_left, oSpan_top;
var LMargin = 0;//element.document.body.leftMargin;
var TMargin = 0;//element.document.body.topMargin;function boxInit()
{
    var oLeft, oTop, oWidth, oHeight;    //创建对象
    selectBox   = element;
    oSpan       = element.document.createElement("span");
    oSpanSelect = element.document.createElement("span");
    oSpanInput  = element.document.createElement("span");
    oInput      = element.document.createElement("input");    oLeft   = getPositionLeft(selectBox) + 1;
    oTop    = getPositionTop(selectBox) + 1;
    oWidth  = element.offsetWidth;
    oHeight = element.offsetHeight;
    
    oSpanSelect.style.cssText = "position:absolute; top:"+(oTop+1)+"px; left:"+oLeft+"px; width:"+oWidth+"px; font-size:9pt;clip:rect(0 "+oWidth+" 21 "+(oWidth-18)+");";
    oSpanInput.style.cssText  = "position:absolute; top:"+(oTop)+"px; left:"+oLeft+"px;";
    oInput.style.cssText      = "width:"+(oWidth-17)+"px; font-size:12px; ime-mode:disabled";
    oInput.id = element.id + "_input";
    selectBox.insertAdjacentElement("beforeBegin",oSpan);
    element.document.body.appendChild(oSpanSelect);
    oSpanSelect.appendChild(selectBox);
    oSpan.appendChild(oSpanSelect);
    element.document.body.appendChild(oSpanInput);
    oSpanInput.appendChild(oInput);
    oSpan.appendChild(oSpanInput);
    
    set_oSpan_postion();
    setbox();
}function setbox()
{
    oInput.value = selectBox.options[selectBox.selectedIndex].text;
}function setPosition()
{
    var diff_left = getPositionLeft(oSpan) - oSpan_left;
    var diff_top  = getPositionTop(oSpan) - oSpan_top;    oSpanSelect.style.left = parseInt(oSpanSelect.style.left) + diff_left;
    oSpanInput.style.left  = parseInt(oSpanInput.style.left) + diff_left;
    oSpanSelect.style.top = parseInt(oSpanSelect.style.top) + diff_top;
    oSpanInput.style.top  = parseInt(oSpanInput.style.top) + diff_top;
    
    set_oSpan_postion();
}function getPositionLeft(o)
{
    var obj = o;
    var left = 0;
    while(obj.tagName.toLowerCase() != "body")
    {
        left += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    left += parseInt(LMargin, 10);
    return left;
}function getPositionTop(o)
{
    var obj = o;
    var top = 0;
    while(obj.tagName.toLowerCase() != "body")
    {
        top  += obj.offsetTop;
        obj = obj.offsetParent;
    }
    top += parseInt(TMargin, 10);
    return top;
}function set_oSpan_postion()
{
    oSpan_left = getPositionLeft(oSpan);
    oSpan_top  = getPositionTop(oSpan);
}
</script>
</PUBLIC:COMPONENT>

解决方案 »

  1.   

    //检查s是否为有效的身份证号码
    function isCardNo(s){
        var ma=null;
        var s1=trim(s);
        if(s1.length==15){
            ma=s.match(/^\d{6}(\d{6})\d{3}$/);
        }else if(s1.length==18){
            ma=s.match(/^\d{6}(\d{8})\d{4}$/);
        }
        return ma!=null && isDate(ma[2]);
    }function isDate(s, isQuery, d1, d2){
        if(s==null)return false;
        // YYMMDD,YYYYMMDD
    var matchArray=trim(s).match(/^((\d{2}){1,2})(\d{2})(\d{2})$/);
        if(matchArray==null)return false;
        var year=matchArray[1];
    var month=matchArray[3];
    var day=matchArray[4];
    if((month-12)>0 || (month-1)<0)return false;
    if((day-31)>0 ||(day-1)<0)return false;
    if((day - getDays(year,month))>0)return false;
        return true;
    }function getDays(year,month){
        if( (month==1)
          || (month==3)
          || (month==5)
          || (month==7)
          || (month==8)
          || (month==10)
          || (month==12))return 31;
        if(month==4 || month==6 || month==9 || month==11)return 30;
        if(year%400==0)return 29;
        if(year%100==0)return 28;
        if(year%4==0)return 29;
        return 28;
    }
    function ltrim(s,c){
    var sTemp=s;
        if(s==null)return "";
    if(c==null)c=' ';
    while(sTemp.substring(0,1)==c){
    sTemp=sTemp.substring(1);
    }
    return sTemp;
    }function rtrim(s,c){
    var sTemp=s;
        if(s==null)return "";
    if(c==null)c=' ';
    while(sTemp.substring(sTemp.length-2,sTemp.length-1)==c){
    sTemp=sTemp.substring(0,sTemp.length-2);
    }
    return sTemp;
    }function trim(s,c){
    return rtrim(ltrim(s,c),c);
    }
      

  2.   

    http://community.csdn.net/Expert/topic/3348/3348003.xml?temp=.2823908
    1  确定身份正的位数
    2  单单对于客户输入的数值是不能更准确的判断他的身份正是否正确
       因为:身份证的前4为代表他属于哪个市
             而第6-14代表出生日期
             最后一位代表性别
    3  要通过他的其他资料来进行对比才勉强可以
    <script>
    function aa()
    var a,d,e
    e=document.form1.text2.value
    if (e=="男"){
       e="1"
                 }
    else{
        e="0"
    }
    a=document.form1.text1.value
    d=document.form1.text2.value
    e=document.form1.text3.value
    if (d.substrint(0,3)==a){
      if (d.substring(6,8)==b){
        if (d.substring(17,1)==e{
        document.alert("身份证号正确")
                                }
         else{
        document.alert("不正确")
              }
                           }
                   }
    }     
    </script>  
    <body>
    <form name="from1" action="">
    <input type="text" name="text1">
    你住的城市
    <input type="text" name="text2">
    <pre>
    填写你的生日 如20000101
                   ____--__
                   年  月 日
    </pre>
    <input type="text" name="text3">
    你的 性别
    <input type="submit" name="submit1" onclick="aa()">
    </form>
      

  3.   

    chancelin() 的验证方法基本可以了。不满意可以再修改一下
      

  4.   

    身份证的验证 
          function isIdCardNo(num) 
          { 
            if (isNaN(num)) {alert("输入的不是数字!"); return false;} 
            var len = num.length, re;  
            if (len == 15) 
              re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); 
            else if (len == 18) 
              re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); 
            else {alert("输入的数字位数不对!"); return false;} 
            var a = num.match(re); 
            if (a != null) 
            { 
              if (len==15) 
              { 
                var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); 
                var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
              } 
              else 
              { 
                var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); 
                var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
              } 
              if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;} 
            } 
            return true; 
          }