类似这样的已经很多了!
never-online做过,我也做过,还有好多!

解决方案 »

  1.   

    never-online:
    http://www.never-online.net/code/neverModules/autocomplete/JK:
    http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!365.entrydh20156:
    http://www.jxxg.com/dh20156/dhcombobox/dhcombobox.htm
      

  2.   

    谢谢,我用了http://www.jxxg.com/dh20156/dhcombobox/dhcombobox.htm的代码.已基本实现我要的效果.
    这个代码写得相当漂亮.推荐看到的人都看看.有个新问题:window.event.cancelBubble = true;在firefox中报错:
    window.event has no propreties怎样写js才能实现window.event.cancelBubble = true;的功能,并且支持IE和firefox?
      

  3.   

    ff也有cancelBubble
    只不过window.event FF没它。。
    获取event就可以了。。
    方法可以用。var reEvent = function () {
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    };
      

  4.   

    这样写IE又不行了,reEvent.cancelBubble = true;在IE中没起作用。
    --------------------------------------------------------------
    var reEvent = function () {
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    };这段代码中后面的我不太懂。
    我把这段代码放在js文件中,把window.event.cancelBubble = true;替换为reEvent.cancelBubble = true; 在firefox中没有报错,但中在IE中没起作用。
      

  5.   

    <script type="text/javascript">
    Object.reEvent = function () {
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    };var show = function (a) {
    var e = Object.reEvent();
    if (a) e.cancelBubble = true;
    };
    </script>
    <div style="width:100px; height:100px; background-color:#0099CC; border:#CCCCCC 1px solid;" onclick="alert('我是外面的')">
    <div style="width:100px; height:30px; background-color:#F4F4F4; border:#CCCCCC 1px solid;" onclick="show(true)">&nbsp;</div>
    <div style="width:100px; height:30px; background-color:#FFF7FB; border:#CCCCCC 1px solid;" onclick="show(false)">&nbsp;</div>
    </div>
      

  6.   

    to muxrwc:
    --------------------
    你的代码没问题!
    可拷到我的代码中,firefox就在return o.arguments[0];报错。我的js是写在一个类里面的.window.event.cancelBubble = true 写在一个文本框.onkeydown事件中。
      

  7.   

    Object.reEvent
    这个方法必须要在函数里使用才可以。
      

  8.   

    你把代码弄成可以测试的demo贴上来
      

  9.   

    参考:
    <body>
      <div id="divParent" style="background-color: #ffff00; width: 200px; height: 200px;">Parent!
        <div id="divChild" style="background-color: #00ffff; width: 100px; height: 100px;">
            Child!
        </div>
      </div>
    <script type="text/javascript">
    <!--
    var oParent = document.getElementById("divParent");
    var oChild = document.getElementById("divChild");
    oParent.onclick = function(){
    alert("Parent");
    }
    oChild.onclick = function(e)
    {
    e = e||window.event;
    alert("Child");
    // 停止冒泡!
    // 注释看看效果有何不同!
    e.cancelBubble = true;
    };
    //-->
    </script>
     </body>
      

  10.   

    demo代码如下:<input type="text" id="testBox" /><script language="javascript">
    document.onkeydown=function(e){
    e=e || window.event; 
    e=e.which || e.keyCode;
    if(e==13)
    alert("document.onkeydown触发了");
    }

    Object.reEvent = function () {
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    };
    var testBox=document.getElementById("testBox");
    testBox.onkeydown = function(e){
    e=e || window.event; 
    e=e.which || e.keyCode; 
    var f = Object.reEvent(); 
    f.cancelBubble = true; 
    if(e==13)
    alert("testBox.onkeydown触发了");
    }

    </script>
      

  11.   

    document.onkeydown=function(e){
    e=e || window.event; 
    e=e.which || e.keyCode
    是从别人的代码中抄的,不太明白什么意思
      

  12.   


    <input type="text" id="testBox" /><script language="javascript">
    document.onkeydown=function(e){
    e=e || window.event; 
    e=e.which || e.keyCode;
    if(e==13)
    alert("document.onkeydown触发了");
    }

    Object.reEvent = function () {
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    };
    var testBox=document.getElementById("testBox");
    testBox.onkeydown = function(e){
    e=e || window.event; 
    var f=e.which || e.keyCode; 
    e.cancelBubble = true; 
    if(f==13)
    alert("testBox.onkeydown触发了");
    }

    </script>
    -----------------------------
    受“参考”代码的影响,我将代码改成这样,没问题了,但不明白为什么?
    还有
    e=e || window.event; 
    e=e.which || e.keyCode;
    这两句到底什么意思?