Results 1 to 3 of 3

Thread: show and hide popmenu

  1. #1
    Join Date
    Apr 2010
    Posts
    2
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default show and hide popmenu

    Dear All,
    I am new to this forum and new to asp.net and javascript
    I am trying to create cross-browser popup menu in a click event of an html button as I have seen a good topic "popitupmenu" in
    http://www.dynamicdrive.com/dynamicindex1/popit.htm

    this link above add popupmenu in mouseHover of an <a> tag and I want to same popupmenu in click event of html button.

    I changed <a> to a button <input type=button onclick="showmenu(event,linkset[1], '180px')">
    but nothing has appeared, I debugged the code and found out that each time i click on html button the function hidemenu "Which hides the menu" is called.

    I would really appreciate, how to show popupmenu in click event of html button and I click other at other places that popupmenu should dispear,

    any ideas plz?

  2. #2
    Join Date
    Dec 2008
    Location
    Portsmouth, UK
    Posts
    1,891
    Thanks
    2
    Thanked 441 Times in 435 Posts

    Default

    Code:
    <!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" xml:lang="en" lang="en">
    
    <head>
      <title></title>
    <style type="text/css">
    
    #popitmenu{
    position: absolute;
    background-color: white;
    border:1px solid black;
    font: normal 12px Verdana;
    line-height: 18px;
    z-index: 100;
    visibility: hidden;
    }
    
    #popitmenu a{
    text-decoration: none;
    padding-left: 6px;
    color: black;
    display: block;
    }
    
    #popitmenu a:hover{ /*hover background color*/
    background-color: #CCFF9D;
    }
    
    </style>
    
    <script type="text/javascript">
    
    /***********************************************
    * Pop-it menu- © Dynamic Drive (www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    var defaultMenuWidth="150px" //set default menu width.
    
    var linkset=new Array()
    //SPECIFY MENU SETS AND THEIR LINKS. FOLLOW SYNTAX LAID OUT
    
    linkset[0]='<a href="http://dynamicdrive.com">Dynamic Drive</a>'
    linkset[0]+='<hr>' //Optional Separator
    linkset[0]+='<a href="http://www.javascriptkit.com">JavaScript Kit</a>'
    linkset[0]+='<a href="http://www.codingforums.com">Coding Forums</a>'
    linkset[0]+='<a href="http://www.cssdrive.com">CSS Drive</a>'
    linkset[0]+='<a href="http://freewarejava.com">Freewarejava</a>'
    
    linkset[1]='<a href="http://msnbc.com">MSNBC</a>'
    linkset[1]+='<a href="http://cnn.com">CNN</a>'
    linkset[1]+='<a href="http://news.bbc.co.uk">BBC News</a>'
    linkset[1]+='<a href="http://www.washingtonpost.com">Washington Post</a>'
    
    ////No need to edit beyond here
    
    var ie5=document.all && !window.opera
    var ns6=document.getElementById
    
    if (ie5||ns6)
    document.write('<div id="popitmenu" onMouseover="clearhidemenu();" onMouseout="dynamichide(event)"></div>')
    
    function iecompattest(){
    return (document.compatMode && document.compatMode.indexOf("CSS")!=-1)? document.documentElement : document.body
    }
    
    function showmenu(e, which, optWidth){
     var e=window.event||e;
     if (!document.all&&!document.getElementById) return
     clearhidemenu()
     menuobj=ie5? document.all.popitmenu : document.getElementById("popitmenu")
     menuobj.innerHTML=which
     menuobj.style.width=(typeof optWidth!="undefined")? optWidth : defaultMenuWidth
     menuobj.contentwidth=menuobj.offsetWidth
     menuobj.contentheight=menuobj.offsetHeight
     eventX=ie5? event.clientX : e.clientX
     eventY=ie5? event.clientY : e.clientY
    //Find out how close the mouse is to the corner of the window
     var rightedge=ie5? iecompattest().clientWidth-eventX : window.innerWidth-eventX
     var bottomedge=ie5? iecompattest().clientHeight-eventY : window.innerHeight-eventY
    //if the horizontal distance isn't enough to accomodate the width of the context menu
     if (rightedge<menuobj.contentwidth){
    //move the horizontal position of the menu to the left by it's width
     menuobj.style.left=ie5? iecompattest().scrollLeft+eventX-menuobj.contentwidth+"px" : window.pageXOffset+eventX-menuobj.contentwidth+"px"
    }
    else {
    //position the horizontal position of the menu where the mouse was clicked
     menuobj.style.left=ie5? iecompattest().scrollLeft+eventX+"px" : window.pageXOffset+eventX+"px"
    }//same concept with the vertical position
    if (bottomedge<menuobj.contentheight){
     menuobj.style.top=ie5? iecompattest().scrollTop+eventY-menuobj.contentheight+"px" : window.pageYOffset+eventY-menuobj.contentheight+"px"
    }
     else {
      menuobj.style.top=ie5? iecompattest().scrollTop+event.clientY+"px" : window.pageYOffset+eventY+"px"
     }
      menuobj.style.visibility=menuobj.style.visibility=="visible"&&e.type=='click'?"hidden":"visible"; // toggle visibility on click
      return false
    }
    
    function contains_ns6(a, b) {
    //Determines if 1 element in contained in another- by Brainjar.com
    while (b.parentNode)
    if ((b = b.parentNode) == a)
    return true;
    return false;
    }
    
    function hidemenu(){
    if (window.menuobj)
    menuobj.style.visibility="hidden"
    }
    
    function dynamichide(e){
    if (ie5&&!menuobj.contains(e.toElement))
    hidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    hidemenu()
    }
    
    function delayhidemenu(){
    delayhide=setTimeout("hidemenu()",500)
    }
    
    function clearhidemenu(){
    if (window.delayhide)
    clearTimeout(delayhide)
    }
    
    //if (ie5||ns6)
    //document.onclick=hidemenu
    
    </script></head>
    
    <body>
    <a href="#" onMouseover="showmenu(event,linkset[0])" onMouseout="delayhidemenu()">Webmaster Links</a><br>
    <a href="#" onMouseover="showmenu(event,linkset[1], '180px')" onMouseout="delayhidemenu()">News sites</a>
    <input type="button" name="" value="TEST" onclick="showmenu(event,linkset[0]);" />
    </body>
    
    </html>
    Vic
    God Loves You and will never love you less.
    http://www.vicsjavascripts.org/Home.htm
    If my post has been useful please donate to http://www.operationsmile.org.uk/

  3. The Following User Says Thank You to vwphillips For This Useful Post:

    arahmancsd (04-26-2010)

  4. #3
    Join Date
    Apr 2010
    Posts
    2
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default

    Thank you very much, the problem is solved.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •