From 733f374f85dbaf13cb45d04b659903d641d3fb12 Mon Sep 17 00:00:00 2001 From: Mark Jaquith Date: Tue, 11 Jan 2011 19:37:43 +0000 Subject: [PATCH] Simulate browser behavior for selecting first dropdown element in non-multiselect, if no elements are selected by default. props koopersmith. fixes #16190 git-svn-id: https://develop.svn.wordpress.org/trunk@17252 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-admin/js/list-table.dev.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/wp-admin/js/list-table.dev.js b/wp-admin/js/list-table.dev.js index 51b52d1940..6eb6c2ff58 100644 --- a/wp-admin/js/list-table.dev.js +++ b/wp-admin/js/list-table.dev.js @@ -14,15 +14,33 @@ window.listTable = { this.$tbody = $('#the-list, #the-comment-list'); }, + /** + * Simulates form.reset() for all input, select, and textarea elements + * within a provided context. + */ reset: function( context ) { - context = $( context ); + context = $(context); + $('input', context).each( function(){ this.value = this.defaultValue; this.checked = this.defaultChecked; }); - $('option', context).each( function(){ - this.selected = this.defaultSelected; + + $('select', context).each( function(){ + var options = $('option', this), + anySelected = false; + + options.each( function(){ + this.selected = this.defaultSelected; + anySelected = anySelected || this.defaultSelected; + }); + + // If no options are selected within a single-select dropdown, + // select the first element by default. + if ( ! this.multiple && ! anySelected ) + options[0].selected = true; }); + $('textarea', context).each( function(){ this.value = this.defaultValue; });