summaryrefslogtreecommitdiff
path: root/resources/mediawiki/mediawiki.htmlform.js
blob: 17a02cf4610ed411f475870902c161931f5c88ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
 * Utility functions for jazzing up HTMLForm elements
 */
( function( $ ) {

/**
 * jQuery plugin to fade or snap to visible state.
 *
 * @param boolean instantToggle (optional)
 * @return jQuery
 */
$.fn.goIn = function( instantToggle ) {
	if ( instantToggle === true ) {
		return $(this).show();
	}
	return $(this).stop( true, true ).fadeIn();
};

/**
 * jQuery plugin to fade or snap to hiding state.
 *
 * @param boolean instantToggle (optional)
 * @return jQuery
 */
$.fn.goOut = function( instantToggle ) {
	if ( instantToggle === true ) {
		return $(this).hide();
	}
	return $(this).stop( true, true ).fadeOut();
};

/**
 * Bind a function to the jQuery object via live(), and also immediately trigger
 * the function on the objects with an 'instant' paramter set to true
 * @param callback function taking one paramter, which is Bool true when the event
 *     is called immediately, and the EventArgs object when triggered from an event
 */
$.fn.liveAndTestAtStart = function( callback ){
	$(this)
		.live( 'change', callback )
		.each( function( index, element ){
			callback.call( this, true );
		} );
};

// Document ready:
$( function() {

	// Animate the SelectOrOther fields, to only show the text field when
	// 'other' is selected.
	$( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function( instant ) {
		var $other = $( '#' + $(this).attr( 'id' ) + '-other' );
		$other = $other.add( $other.siblings( 'br' ) );
		if ( $(this).val() === 'other' ) {
			$other.goIn( instant );
		} else {
			$other.goOut( instant );
		}
	});

});


})( jQuery );