Fix exception when searching for stuff beginning with "Media:"
[mediawiki.git] / resources / mediawiki / mediawiki.htmlform.js
blob83bf2e3a2aadf47d850201f9a3f28d75c64140b5
1 /**
2  * Utility functions for jazzing up HTMLForm elements.
3  */
4 ( function ( $ ) {
6         /**
7          * jQuery plugin to fade or snap to visible state.
8          *
9          * @param {boolean} instantToggle [optional]
10          * @return {jQuery}
11          */
12         $.fn.goIn = function ( instantToggle ) {
13                 if ( instantToggle === true ) {
14                         return $(this).show();
15                 }
16                 return $(this).stop( true, true ).fadeIn();
17         };
19         /**
20          * jQuery plugin to fade or snap to hiding state.
21          *
22          * @param {boolean} instantToggle [optional]
23          * @return jQuery
24          */
25         $.fn.goOut = function ( instantToggle ) {
26                 if ( instantToggle === true ) {
27                         return $(this).hide();
28                 }
29                 return $(this).stop( true, true ).fadeOut();
30         };
32         /**
33          * Bind a function to the jQuery object via live(), and also immediately trigger
34          * the function on the objects with an 'instant' parameter set to true.
35          * @param {Function} callback Takes one parameter, which is {true} when the
36          *  event is called immediately, and {jQuery.Event} when triggered from an event.
37          */
38         $.fn.liveAndTestAtStart = function ( callback ){
39                 $(this)
40                         .live( 'change', callback )
41                         .each( function () {
42                                 callback.call( this, true );
43                         } );
44         };
46         $( function () {
48                 // Animate the SelectOrOther fields, to only show the text field when
49                 // 'other' is selected.
50                 $( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function ( instant ) {
51                         var $other = $( '#' + $(this).attr( 'id' ) + '-other' );
52                         $other = $other.add( $other.siblings( 'br' ) );
53                         if ( $(this).val() === 'other' ) {
54                                 $other.goIn( instant );
55                         } else {
56                                 $other.goOut( instant );
57                         }
58                 });
60         } );
62 }( jQuery ) );