diff options
author | Dave Methvin <dave.methvin@gmail.com> | 2010-09-24 17:26:22 -0400 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-09-24 17:26:22 -0400 |
commit | 2c4b20809e5d32e916c479c9b63a6b7528c880ce (patch) | |
tree | 88bf846405c1d52085cf4d9ec61010ca072a348f /test | |
parent | 700ff05af0d30722dcc23a69849bfb278fdc7e75 (diff) | |
download | jquery-2c4b20809e5d32e916c479c9b63a6b7528c880ce.tar.gz jquery-2c4b20809e5d32e916c479c9b63a6b7528c880ce.zip |
Don't have .val() return selected-but-disabled options, or selected options inside a disabled optgroup. Doesn't change the .val() returned for a disabled select. Fixes #3240, adapted from Nathan Hammond's patch there.
Diffstat (limited to 'test')
-rw-r--r-- | test/index.html | 9 | ||||
-rw-r--r-- | test/unit/attributes.js | 10 | ||||
-rw-r--r-- | test/unit/event.js | 2 | ||||
-rw-r--r-- | test/unit/selector.js | 12 | ||||
-rw-r--r-- | test/unit/traversing.js | 4 |
5 files changed, 27 insertions, 10 deletions
diff --git a/test/index.html b/test/index.html index 78060d464..5650a1d07 100644 --- a/test/index.html +++ b/test/index.html @@ -114,6 +114,15 @@ <option id="option3d" value="3">3</option> <option id="option3e">no value</option> </select> + <select name="select4" id="select4" multiple="multiple"> + <optgroup disabled="disabled"> + <option id="option4a" class="emptyopt" value="">Nothing</option> + <option id="option4b" disabled="disabled" selected="selected" value="1">1</option> + <option id="option4c" selected="selected" value="2">2</option> + </optgroup> + <option selected="selected" disabled="disabled" id="option4d" value="3">3</option> + <option id="option4e">no value</option> + </select> <object id="object1" codebase="stupid"> <param name="p1" value="x1" /> diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 037272112..986623b42 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -302,7 +302,7 @@ test("removeAttr(String)", function() { }); test("val()", function() { - expect(17); + expect(20); document.getElementById('text1').value = "bla"; equals( jQuery("#text1").val(), "bla", "Check for modified value of input element" ); @@ -329,6 +329,14 @@ test("val()", function() { jQuery('#select3').val(""); same( jQuery('#select3').val(), [''], 'Call val() on a multiple="multiple" select' ); + same( jQuery('#select4').val(), [], 'Call val() on multiple="multiple" select with all disabled options' ); + + jQuery('#select4 optgroup').add('#select4 > [disabled]').attr('disabled', false); + same( jQuery('#select4').val(), ['2', '3'], 'Call val() on multiple="multiple" select with some disabled options' ); + + jQuery('#select4').attr('disabled', true); + same( jQuery('#select4').val(), ['2', '3'], 'Call val() on disabled multiple="multiple" select' ); + var checks = jQuery("<input type='checkbox' name='test' value='1'/><input type='checkbox' name='test' value='2'/><input type='checkbox' name='test' value=''/><input type='checkbox' name='test'/>").appendTo("#form"); same( checks.serialize(), "", "Get unchecked values." ); diff --git a/test/unit/event.js b/test/unit/event.js index 30324978b..3c77e3445 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -255,7 +255,7 @@ test("bind(), iframes", function() { }); test("bind(), trigger change on select", function() { - expect(3); + expect(4); var counter = 0; function selectOnChange(event) { equals( event.data, counter++, "Event.data is not a global event object" ); diff --git a/test/unit/selector.js b/test/unit/selector.js index 58ae68d57..97fc68973 100644 --- a/test/unit/selector.js +++ b/test/unit/selector.js @@ -21,7 +21,7 @@ test("element", function() { same( jQuery("p", jQuery("div")).get(), q("firstp","ap","sndp","en","sap","first"), "Finding elements with a context." ); same( jQuery("div").find("p").get(), q("firstp","ap","sndp","en","sap","first"), "Finding elements with a context." ); - same( jQuery("#form").find("select").get(), q("select1","select2","select3"), "Finding selects with a context." ); + same( jQuery("#form").find("select").get(), q("select1","select2","select3","select4"), "Finding selects with a context." ); ok( jQuery("#length").length, '<input name="length"> cannot be found under IE, see #945' ); ok( jQuery("#lengthtest input").length, '<input name="length"> cannot be found under IE, see #945' ); @@ -338,7 +338,7 @@ test("pseudo - :not", function() { expect(24); t( "Not", "a.blog:not(.link)", ["mark"] ); - t( "Not - multiple", "#form option:not(:contains(Nothing),#option1b,:selected)", ["option1c", "option1d", "option2b", "option2c", "option3d", "option3e"] ); + t( "Not - multiple", "#form option:not(:contains(Nothing),#option1b,:selected)", ["option1c", "option1d", "option2b", "option2c", "option3d", "option3e", "option4e"] ); t( "Not - recursive", "#form option:not(:not(:selected))[id^='option3']", [ "option3b", "option3c"] ); t( ":not() failing interior", "p:not(.foo)", ["firstp","ap","sndp","en","sap","first"] ); @@ -360,8 +360,8 @@ test("pseudo - :not", function() { t( "No element not selector", ".container div:not(.excluded) div", [] ); t( ":not() Existing attribute", "#form select:not([multiple])", ["select1", "select2"]); - t( ":not() Equals attribute", "#form select:not([name=select1])", ["select2", "select3"]); - t( ":not() Equals quoted attribute", "#form select:not([name='select1'])", ["select2", "select3"]); + t( ":not() Equals attribute", "#form select:not([name=select1])", ["select2", "select3", "select4"]); + t( ":not() Equals quoted attribute", "#form select:not([name='select1'])", ["select2", "select3", "select4"]); t( ":not() Multiple Class", "#foo a:not(.blog)", ["yahoo","anchor2"] ); t( ":not() Multiple Class", "#foo a:not(.link)", ["yahoo","anchor2"] ); @@ -427,7 +427,7 @@ test("pseudo - visibility", function() { test("pseudo - form", function() { expect(8); - t( "Form element :input", "#form :input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "search", "button", "area1", "select1", "select2", "select3"] ); + t( "Form element :input", "#form :input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "search", "button", "area1", "select1", "select2", "select3", "select4"] ); t( "Form element :radio", "#form :radio", ["radio1", "radio2"] ); t( "Form element :checkbox", "#form :checkbox", ["check1", "check2"] ); t( "Form element :text", "#form :text:not(#search)", ["text1", "text2", "hidden2", "name"] ); @@ -435,5 +435,5 @@ test("pseudo - form", function() { t( "Form element :checkbox:checked", "#form :checkbox:checked", ["check1"] ); t( "Form element :radio:checked, :checkbox:checked", "#form :radio:checked, #form :checkbox:checked", ["radio2", "check1"] ); - t( "Selected Option Element", "#form option:selected", ["option1a","option2d","option3b","option3c"] ); + t( "Selected Option Element", "#form option:selected", ["option1a","option2d","option3b","option3c","option4b","option4c","option4d"] ); }); diff --git a/test/unit/traversing.js b/test/unit/traversing.js index 179e130ba..4233f70f9 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -152,7 +152,7 @@ test("not(Selector)", function() { equals( jQuery("#main > p#ap > a").not("#google").length, 2, "not('selector')" ); same( jQuery("p").not(".result").get(), q("firstp", "ap", "sndp", "en", "sap", "first"), "not('.class')" ); same( jQuery("p").not("#ap, #sndp, .result").get(), q("firstp", "en", "sap", "first"), "not('selector, selector')" ); - same( jQuery("#form option").not("option.emptyopt:contains('Nothing'),[selected],[value='1']").get(), q("option1c", "option1d", "option2c", "option3d", "option3e" ), "not('complex selector')"); + same( jQuery("#form option").not("option.emptyopt:contains('Nothing'),[selected],[value='1']").get(), q("option1c", "option1d", "option2c", "option3d", "option3e", "option4e" ), "not('complex selector')"); same( jQuery('#ap *').not('code').get(), q("google", "groups", "anchor1", "mark"), "not('tag selector')" ); same( jQuery('#ap *').not('code, #mark').get(), q("google", "groups", "anchor1"), "not('tag, ID selector')" ); @@ -163,7 +163,7 @@ test("not(Element)", function() { expect(1); var selects = jQuery("#form select"); - same( selects.not( selects[1] ).get(), q("select1", "select3"), "filter out DOM element"); + same( selects.not( selects[1] ).get(), q("select1", "select3", "select4"), "filter out DOM element"); }); test("not(Function)", function() { |