diff --git a/src/attributes.js b/src/attributes.js index d37400a68..599721055 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -198,6 +198,11 @@ jQuery.fn.extend({ } } + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + return values; } diff --git a/test/unit/attributes.js b/test/unit/attributes.js index c58111de1..8cf47bed6 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -546,6 +546,25 @@ test("val(Function) with incoming value", function() { equals( jQuery("#select1").val(), "4", "Should be possible to set the val() to a newly created option" ); }); +// testing if a form.reset() breaks a subsequent call to a select element's .val() (in IE only) +test("val(select) after form.reset() (Bug #2551)", function() { + expect(3); + + jQuery('
').appendTo("#main"); + + jQuery("#kkk").val( "gf" ); + + document.kk.reset(); + + equal( jQuery("#kkk")[0].value, "cf", "Check value of select after form reset." ); + equal( jQuery("#kkk").val(), "cf", "Check value of select after form reset." ); + + // re-verify the multi-select is not broken (after form.reset) by our fix for single-select + same( jQuery('#select3').val(), ['1', '2'], 'Call val() on a multiple="multiple" select' ); + + jQuery("#kk").remove(); +}); + var testAddClass = function(valueObj) { expect(5); var div = jQuery("div");