需求有点复杂,在标题中不容易说清楚,是这样的
我有一个input type="test"当input得到焦点时,显示一个关联的div(这一点可以做到)来选择里面的select当失去焦点(input和div都没有焦点)的时候,隐藏div,div是没有focus和blur的,如果用input的blur,那么一旦要去点div中的select时,div却被隐藏了。。各位给个思路,谢谢

解决方案 »

  1.   

    blur处理函数中判断下 event.toElement (ff下用relatedTarget结合事件构建,http://www.blogjava.net/Unmi/archive/2009/07/10/286274.html)
    是不是 div 或其子元素(元素的contains方法, ff下可构建),然后再做隐藏的动作。
      

  2.   

    input焦点时层显示,
    层的mouseout或者select的blur时,层隐藏
    有个问题要注意下,当鼠标从层移到select时会触发层的mouseout。
      

  3.   

    同意这种做法,还可以在你blur下判断select是否被选择后,隐藏div
      

  4.   


      <input id="effect" onfocus="showDiv();" />
    <div id="divDialog" onmouseout="hidDiv(event,this);" style="width:200px;height:200px; background-color:#999999">
            我的选项:
            <select id="sel">
            </select>
        </div>
       function hidDiv(event, obj)
            {
                var srcelement = window.event ? event.toElement : event.explicitOriginalTarget;//鼠标移向的元素            if (!srcelement|| srcelement.id == "divDialog" || srcelement.id=="sel" )
                {
                    return;
                }
                document.getElementById("divDialog").style.visibility = "hidden";
            }
            function showDiv(event)
            {
                document.getElementById("divDialog").style.visibility = "visible";
            }
      

  5.   

    感谢楼上各位给出的方法不过我用的是
    function CreateFunction(owner, func)
    {
        var ps,i;
        if(null==owner)owner = window;
        ps = new Array();
        for(i=2;i<arguments.length;++i)
    ps.push(arguments[i]);
        return function(){owner[func].apply(owner, ps);}
    }
    这个时候在ff好像是得不到event