<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
  <script   language=JavaScript>  
String.prototype.trim   =   function()  {  return   this.replace(/(^\s*)|(\s*$)/g, ""); }   
function $$(id){return document.getElementById(id);}
function AJump(e,obj,str){var e = window.event || e;var ekey = e.keyCode ? e.keyCode : e.which;if(obj.value.length==str&&obj.nextSibling.nextSibling!=null&&obj.nextSibling.nextSibling.type=="text"){obj.nextSibling.nextSibling.select();}
if(obj.previousSibling!=null){if(obj.value.length==0&&ekey==8&&obj.previousSibling.previousSibling!=null){obj.previousSibling.previousSibling.select();}}} 
function popaste(){var c=window.clipboardData.getData('text'); c=c.trim();
    carray=c.split(" ");
    $$("postcode").value=carray[0];
    if (carray[1]!=null){$$("postcode2").value=carray[1];}
    }
function chkpo1(obj)
{obj.value=obj.value.trim();obj.value=obj.value.toUpperCase();
    if(obj.value!="")
    { var reg=/^GIR|[A-PR-UWYZ][0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]$/;
        if(!reg.test(obj.value))
        {
            alert("邮编前半部分不正确!");
            obj.focus();obj.className="onErr";return false;
        }else
        { obj.className="";
        }
    }
}
function chkpo2(obj)
{obj.value=obj.value.trim();obj.value=obj.value.toUpperCase();
    if(obj.value!="")
    { var reg=/^0AA|[0-9][ABD-HJLNP-UW-Z]{2}$/;
        if(!reg.test(obj.value))
        {
            alert("邮编后半部分不正确!");
            obj.focus();obj.className="onErr";return false;
        }else
        { obj.className="";
        }
    }
}
  </script>  
</head>
<body>  M15 5FX
<input name="postcode" type="text" id="postcode" value="" size="4" onblur="chkpo1(this);" maxlength="4" onbeforepaste="popaste();" onkeyup="AJump(event,this,4);" /><input name="postcode2" type="text" id="postcode2" value="" size="4" onblur="chkpo2(this);" onkeyup="AJump(event,this,4)" maxlength="4">
</body>  
</html>

解决方案 »

  1.   

    问题:
    1. 粘贴M15 5FX时,第一个输入框会莫名的加入一个M,变成M15M, 也就是加上第一输入框的第一字母, 如果在第二个输入框,也就是$$("postcode2").value=carray[1];后面加上$$("postcode2").focus,则会把M带入第二个输入框2. 函数AJump不起作用, 它的作用是第一个输入框输入4个字符后自动跳到第二个输入框,第二个输入框按backspace清除所有字符后自动跳到第一个输入框。困扰好几天了,请高手指导指导~~~
      

  2.   

    #1
    你注意到没有,就是还没有paste的时候,你拷贝的内容已经放进去了,你再paste的话其实是paste了两次,只不过第一个input的size是4,所以后面的15没出来
    #2
    function AJump(e, obj, str) {
        var e = window.event || e;
        var ekey = e.keyCode ? e.keyCode : e.which;
        if (obj.value.length == str && obj.nextSibling != null && obj.nextSibling.type == "text") {
            obj.nextSibling.select();
        }
        if (obj.previousSibling != null) {
            if (obj.value.length == 0 && ekey == 8 && obj.previousSibling != null) {
                obj.previousSibling.focus(); 
           } 
        }
    }
      

  3.   

    1. 粘贴M15 5FX时,第一个输入框会莫名的加入一个M,变成M15M, 也就是加上第一输入框的第一字母, 如果在第二个输入框,也就是$$("postcode2").value=carray[1];后面加上$$("postcode2").focus,则会把M带入第二个输入框 
    -----------------------------------
    from:onbeforepaste="popaste();" 
    to  :onpaste="popaste();"
      

  4.   

    多谢楼上两位:AJump这个函数还有个问题, 当在第一个输入框按下backspace时候会产生错误,应该怎么完善?
      

  5.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无h・文档</title>
      <script   language=JavaScript>  
    String.prototype.trim   =   function()  {  return   this.replace(/(^\s*)|(\s*$)/g, ""); }   
    function $$(id){return document.getElementById(id);}
    function AJump(e,obj,str){var e = window.event || e;var ekey = e.keyCode ? e.keyCode : e.which;if(obj.value.length==str&&obj.nextSibling.nextSibling!=null&&obj.nextSibling.nextSibling.type=="text"){obj.nextSibling.nextSibling.select();}
    if(obj.previousSibling!=null){if(obj.value.length==0&&ekey==8&&obj.previousSibling.previousSibling!=null){obj.previousSibling.previousSibling.select();}}} 
    function popaste(){var c=window.clipboardData.getData('text'); c=c.trim();
        carray=c.split(" ");
        $$("postcode").value=carray[0];
        if (carray[1]!=null){$$("postcode2").value=carray[1];}
        }
    function chkpo1(obj)
    {obj.value=obj.value.trim();obj.value=obj.value.toUpperCase();
        if(obj.value!="")
        {    var reg=/^GIR|[A-PR-UWYZ][0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]$/;
            if(!reg.test(obj.value))
            {
                alert("222!");
                obj.focus();obj.className="onErr";return false;
            }else
            { obj.className="";
            }
        }
    }
    function chkpo2(obj)
    {obj.value=obj.value.trim();obj.value=obj.value.toUpperCase();
        if(obj.value!="")
        {    var reg=/^0AA|[0-9][ABD-HJLNP-UW-Z]{2}$/;
            if(!reg.test(obj.value))
            {
                alert("111!");
                obj.focus();obj.className="onErr";return false;
            }else
            { obj.className="";
            }
        }
    }
      </script>  
    </head>
    <body>  M15 5FX
    <input name="postcode" type="text" id="postcode" value="" size="4" onblur="chkpo1(this);" maxlength="4" onpaste="popaste();" onkeyup="AJump(event,this,4);" />
    <input name="postcode2" type="text" id="postcode2" value="" size="4" onblur="chkpo2(this);" onkeyup="AJump(event,this,4)" maxlength="4">
    </body>  
    </html>
      

  6.   

    <body>  M15 5FX 
    <input name="postcode" type="text" id="postcode" value="" size="4" onblur="chkpo1(this);" maxlength="4" onpaste="popaste();" onkeyup="AJump(event,this,4);" /><!--insert blank--><input name="postcode2" type="text" id="postcode2" value="" size="4" onblur="chkpo2(this);" onkeyup="AJump(event,this,4)" maxlength="4"> 
    </body>