Prevent Default Event Actions Using MooTools 1.2

By  on  

Many sweet JavaScript events are trigger by clicking on a link or a submit button. What if you don't want the browser to follow the link? What if you don't want the form to be submitted traditionally? MooTools allows you to prevent the default actions of most elements by using the preventDefault() method.

The Sample XHTML

<p><a href="http://scriptandstyle.com" class="prevent">ScriptAndStyle.com</a></p>
<p><input type="checkbox" class="prevent" /></p>
<p><input type="submit" class="prevent" value="Submit Form" /></p>

The action of any element with the prevent class will be nullified upon click.

The MooTools 1.2 Code

window.addEvent('domready', function() {
	$each($$('.prevent'),function(el) {
		el.addEvent('click',function(event) {
			event.preventDefault();
		});
	});
});

You can also prevent the browser from allowing image dragging! I did, however, notice that this function did not work correctly on a radio input.

Recent Features

Incredible Demos

  • By
    WebKit-Specific Style:  -webkit-appearance

    I was recently scoping out the horrid source code of the Google homepage when I noticed the "Google Search" and "I'm Feeling Lucky" buttons had a style definition I hadn't seen before:  -webkit-appearance.  The value assigned to the style was "push-button."  They are buttons so that...

  • By
    Spyjax:  Ajax For Evil Using Dojo

    The idea of Spyjax is nothing new. In pasts posts I've covered how you can spy on your user's history with both MooTools and jQuery. Today we'll cover how to check user history using the Dojo Toolkit. The HTML For the sake of this...

Discussion

  1. thomasd

    You can use the $lambda function and a little bit of the Elements-Class magic to make this a one-liner:

    window.addEvent('domready', function() {
           //Now every click on one of the .prevent-Elements returns a 'false' and the propagation of the event gets stopped.
        $$('.prevent').addEvent('click',$lambda(false));
    });
    
  2. @thomasd: Sweet tip!

  3. asdf123

    i found that the method that fails the least is:

    $("bla").addEvent('click',function(_e){
    
    new Event(_e).preventDefault().stopPropagation();
    
    
    //alternatively:
    
    new Event(_e).stop();
    
    //or very simple in mootools 1.2:
    
    return false;
    
    })
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!