本帖最后由 sysdzw 于 2011-08-27 17:05:56 编辑

解决方案 »

  1.   

    <!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=gb2312" />
    <title>无标题文档</title>
    </head>
    <script language="javascript">
    function test(){
    var val=document.form1.t1.value;
    if( document.form1.t1.value.length=16){
    document.form1.t1.value=val.substring(0,4);
    document.form1.t2.value=val.substring(4,8);
    document.form1.t3.value=val.substring(8,12);
    document.form1.t4.value=val.substring(12,16);
    }
    }
    </script>
    <body>
    <form id="form1" name="form1" method="post" action="">
      <label>
      <input name="t1" type="text" id="t1" onchange="test();"/>
      </label>
      <label>
      <input name="t2" type="text" id="t2" />
      </label>
      <label>
      <input name="t3" type="text" id="t3" />
      </label>
      <label>
      <input name="t4" type="text" id="t4" />
      </label>
    </form>123456789abcdefgh
    </body>
    </html>
      

  2.   

    在ie7个firefox6中试了下粘贴到第一个文本框都没有效果,但是如果按下回车的话就会分割到4个框中。
      

  3.   

    试试onpropertychange,input 在IE下响应onpaste
      

  4.   

    通用做法,监听onkeydown事件。粘帖就是ctrl+v,判断是否这两个键同时按下,如果是,就判断第一个输入框是否16个字符,如果是,则把第一个框的字符切割成4段,然后分别填入对应的4个文本框。
      

  5.   

    你可以onkeyup监视!
    keyup->数据进入->事件触发->$(this).value();
    不知道程序的执行顺序会不会这样执行,你可以测试一下!
      

  6.   

    感觉keydown监视的有点早!可能会接收不到数据!
      

  7.   

    第一个script中是一个简单的事件封装,你可以使用任意喜欢的。
    下面的代码在ie8中测试过,没有考虑chrome下和firefox下获取剪贴板
    只是给出一个思路<!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>
        <title></title>
    </head>
    <body>
    <div id="container">
    <input id="text1" type="text" />
    <input id="text2" type="text" />
    <input id="text3" type="text" />
    <input id="text4" type="text" />
    </div>
        <script type="text/javascript">
        //<![CDATA[        var EventUtility = {            addHandler: function (element, eventName, handler) {
                    if (typeof element.addEventListener === "function")
                        element.addEventListener(eventName, handler, false);
                    else if (typeof element.attachEvent === "object")
                        element.attachEvent("on" + eventName, handler);
                    else
                        element["on" + eventName] = handler;
                },
                removeHandler: function (element, eventName, handler) {
                    if (typeof element.addEventListener === "function")
                        element.removeEventListener(eventName, handler, false);
                    else if (typeof element.attachEvent === "object")
                        element.detachEvent("on" + eventName, handler);
                    else
                        element["on" + eventName] = null;
                }
            };    //]]>
        </script>    <script type="text/javascript">        EventUtility.addHandler(document.getElementById("container"), "paste", function (event) {
                var target = event.target || event.srcElement;
                if (target.id === "text1") {
                    if (window.clipboardData.getData) {
                        var text = window.clipboardData.getData('Text');
                        if (text.length === 16) {
                            if (event.preventDefault)
                                event.preventDefault();
                            else
                                event.returnValue = false;
                            document.getElementById("text1").value = text.substring(0, 4);
                            document.getElementById("text2").value = text.substring(4, 8);
                            document.getElementById("text3").value = text.substring(9, 13);
                            document.getElementById("text4").value = text.substring(13, 16);
                        }
                    }
                }
            });
           
        </script>
    </body>
    </html>