diff options
Diffstat (limited to 'skins/common/htmlform.js')
-rw-r--r-- | skins/common/htmlform.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/skins/common/htmlform.js b/skins/common/htmlform.js new file mode 100644 index 00000000..2045ab48 --- /dev/null +++ b/skins/common/htmlform.js @@ -0,0 +1,40 @@ +// Find select-or-other fields. +addOnloadHook( function() { + var fields = getElementsByClassName( document, 'select', 'mw-htmlform-select-or-other' ); + + for( var i = 0; i < fields.length; i++ ) { + var select = fields[i]; + + addHandler( select, 'change', htmlforms.selectOrOtherSelectChanged ); + + // Use a fake 'e' to update it. + htmlforms.selectOrOtherSelectChanged( { 'target': select } ); + } +} ); + +var htmlforms = { + 'selectOrOtherSelectChanged' : function( e ) { + var select; + if ( !e ) { + e = window.event; + } + if ( e.target ) { + select = e.target; + } else if ( e.srcElement ) { + select = e.srcElement; + } + if ( select.nodeType == 3 ) { // defeat Safari bug + select = select.parentNode; + } + + var id = select.id; + var textbox = document.getElementById( id + '-other' ); + + if ( select.value == 'other' ) { + textbox.disabled = false; + } else { + textbox.disabled = true; + } + } +} + |