mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Fix #13011. Let 'type' attribute be set if the browser allows.
This commit is contained in:
parent
1d1c80d377
commit
aad235b325
@ -1,7 +1,6 @@
|
||||
var nodeHook, boolHook, fixSpecified,
|
||||
rclass = /[\t\r\n]/g,
|
||||
rreturn = /\r/g,
|
||||
rtype = /^(?:input|button)$/i,
|
||||
rfocusable = /^(?:input|select|textarea|button|object)$/i,
|
||||
rclickable = /^(?:a|area)$/i,
|
||||
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
||||
@ -366,13 +365,9 @@ jQuery.extend({
|
||||
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" );
|
||||
} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
|
||||
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
|
||||
// Reset value to default in case type is set after value during creation
|
||||
var val = elem.value;
|
||||
elem.setAttribute( "type", value );
|
||||
if ( val ) {
|
||||
|
@ -221,7 +221,7 @@ test( "attr(Hash)", function() {
|
||||
});
|
||||
|
||||
test( "attr(String, Object)", function() {
|
||||
expect( 81 );
|
||||
expect( 79 );
|
||||
|
||||
var div = jQuery("div").attr("foo", "bar"),
|
||||
fail = false;
|
||||
@ -379,14 +379,12 @@ test( "attr(String, Object)", function() {
|
||||
|
||||
// Type
|
||||
var type = jQuery("#check2").attr("type");
|
||||
var thrown = false;
|
||||
try {
|
||||
jQuery("#check2").attr( "type", "hidden" );
|
||||
ok( true, "No exception thrown on input type change" );
|
||||
} catch( e ) {
|
||||
thrown = true;
|
||||
ok( true, "Exception thrown on input type change: " + e );
|
||||
}
|
||||
ok( thrown, "Exception thrown when trying to change type property" );
|
||||
equal( type, jQuery("#check2").attr("type"), "Verify that you can't change the type of an input element" );
|
||||
|
||||
var check = document.createElement("input");
|
||||
thrown = true;
|
||||
@ -409,14 +407,12 @@ test( "attr(String, Object)", function() {
|
||||
equal( "checkbox", check.attr("type"), "Verify that you can change the type of an input element that isn't in the DOM" );
|
||||
|
||||
var button = jQuery("#button");
|
||||
thrown = false;
|
||||
try {
|
||||
button.attr( "type", "submit" );
|
||||
ok( true, "No exception thrown on button type change" );
|
||||
} catch( e ) {
|
||||
thrown = true;
|
||||
ok( true, "Exception thrown on button type change: " + e );
|
||||
}
|
||||
ok( thrown, "Exception thrown when trying to change type property" );
|
||||
equal( "button", button.attr("type"), "Verify that you can't change the type of a button element" );
|
||||
|
||||
var $radio = jQuery( "<input>", {
|
||||
"value": "sup",
|
||||
|
Loading…
Reference in New Issue
Block a user