Created
September 4, 2011 02:40
-
-
Save johnboxall/1192149 to your computer and use it in GitHub Desktop.
For when you _really_ wanna change the type of a input with jQuery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var rtype = /^(?:button|input)$/i; | |
jQuery.attrHooks.type.set = function(elem, value) { | |
// We can't allow the type property to be changed (since it causes problems in IE) | |
if (rtype.test(elem.nodeName) && elem.parentNode) { | |
// jQuery.error( "type property can't be changed" ); | |
// JB: Or ... can it!? | |
var $el = $(elem); | |
var insertionFn = 'after'; | |
var $insertionPoint = $el.prev(); | |
if (!$insertionPoint.length) { | |
insertionFn = 'prepend'; | |
$insertionPoint = $el.parent(); | |
} | |
$el.detach().attr('type', value); | |
$insertionPoint[insertionFn]($el); | |
return value; | |
} else if (!jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input")) { | |
// Setting the type on a radio button after the value resets the value in IE6-9 | |
// Reset value to it's default in case type is set after value | |
// This is for element creation | |
var val = elem.value; | |
elem.setAttribute("type", value); | |
if (val) { | |
elem.value = val; | |
} | |
return value; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment