YUI Library JavaScript DHTML





    
Split Buttons

/*margin and padding on body element
  can introduce errors in determining
  element position and are not recommended;
  we turn them off as a foundation for YUI
  CSS treatments. */
body {
  margin:0;
  padding:0;
}











    /*
        Set the "zoom" property to "normal" since it is set to "1" by the 
        ".example-container .bd" rule in yui.css and this causes a Menu
        instance's width to expand to 100% of the browser viewport.
    */
    
    div.yuimenu .bd {
    
        zoom: normal;
    
    }
    #button-example-form fieldset {
        border: 2px groove #ccc;
        margin: .5em;
        padding: .5em;
    }
    
    #splitbutton3menu,
    #splitbutton4menu {
    
        position: absolute;
        visibility: hidden;
        border: solid 1px #000;
        padding: .5em;
        background-color: #ccc;
    
    }
    #button-example-form-postdata {
    
        border: dashed 1px #666;
        background-color: #ccc;
        padding: 1em;
    
    }
    #button-example-form-postdata h2 {
    
        margin: 0 0 .5em 0;
        padding: 0;
        border: none;
    
    }




Split Buttons



  

This example demonstrates different ways to create and use a Split Button.

      



  //  "contentready" event handler for the "splitbuttonsfrommarkup" 

  YAHOO.util.Event.onContentReady("splitbuttonsfrommarkup", function () {
    //  Create a Button using an existing  and  element was set to 
    //  "submit" - clicking on any MenuItem in the Button's Menu will
    //  automatically submit the Button's parent 
.
    var oSplitButton1 = new YAHOO.widget.Button("splitbutton1", { type: "split", menu: "splitbutton1select" });
    //  "render" event handler for the Button's Menu
    var onMenuRender = function (p_sType, p_aArgs) {
    
      this.addItems([
        { text: "Four", value: 4 },
        { text: "Five", value: 5 }
      ]);
      
    };
    //  Add some additional MenuItems to the Button's Menu once it has been rendered
    
    oSplitButton1.getMenu().subscribe("render", onMenuRender);
    //  "submit" event handler for the 
    
    var onExampleSubmit = function (p_oEvent) {
      var bSubmit = window.confirm("Are you sure you want to submit this form?");
      if(!bSubmit) {
        YAHOO.util.Event.preventDefault(p_oEvent);
      }
    };
    //  Add a "submit" event handler to the  to confirm that 
    //  clicking on one of the MenuItems in the Button's Menu 
    //  submits the .
    YAHOO.util.Event.on("button-example-form", "submit", onExampleSubmit);
    //  "click" event handler for the Button - called when the user clicks 
    //  on the Button's text label, not when the user clicks on the area 
    //  of the Button that displays the Button's Menu.
    var onButtonClick = function () {
    
      alert("You clicked the Button.");
      
    };
    //  Create a Button using an existing  and  element and an Overlay instance as its menu
    var oSplitButton3 = new YAHOO.widget.Button("splitbutton3", { type: "split", menu: "splitbutton3menu" });
  });
  //  Search for an element to place the Split Button into via the 
  //  Event Utility's "onContentReady" method
  YAHOO.util.Event.onContentReady("splitbuttonsfromjavascript", function () {
    //  Create two Buttons without using existing markup
    // Instantiate an Overlay instance
    var oOverlay = new YAHOO.widget.Overlay("splitbutton4menu", { visible: false });
    oOverlay.setBody("Split Button 4 Menu");
    // Instantiate a Split Button
    var oSplitButton4 = new YAHOO.widget.Button({ type: "split",  label: "Split Button 4", menu: oOverlay, container: this });
    //  "click" event handler for each item in the Button's Menu
    var onMenuItemClick = function (p_sType, p_aArgs, p_oItem) {
      
      var sText = p_oItem.cfg.getProperty("text");
      
      alert("[MenuItem Properties] text: " + sText + ", value: " + p_oItem.value);
    };
    //  Create an array of YAHOO.widget.MenuItem configuration properties
    var aSplitButton5Menu = [
      { text: "One", value: 1, onclick: { fn: onMenuItemClick } },
      { text: "Two", value: 2, onclick: { fn: onMenuItemClick } },
      { text: "Three", value: 3, onclick: { fn: onMenuItemClick } }
    ];
    //  Instantiate a Split Button using the array of YAHOO.widget.MenuItem 
    //  configuration properties as the value for the "menu" 
    //  configuration attribute.
    var oSplitButton5 = new YAHOO.widget.Button({ type: "split",  label: "Split Button 5", name: "splitbutton5", menu: aSplitButton5Menu, container: this });
    
  });


    
        Split Buttons
        
            From Markup
            
            
                One
                Two
                Three                
            
            
            
                One
                Two
                Three                
            
            
            
                Split Button 3 Menu

            

        
        
            From JavaScript
        
     





   
  
yui_2.7.0b.zip( 4,431 k)