aboutsummaryrefslogtreecommitdiffstats
path: root/src/jquery/jquery.js
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-09-05 17:06:05 +0000
committerJohn Resig <jeresig@gmail.com>2007-09-05 17:06:05 +0000
commitf96bf1041553775a94c1034c97e253e350217173 (patch)
treeec325ec45526f3caddac0157f98645ca7aaad64c /src/jquery/jquery.js
parentf28f199dc0a353135ef8b9afa2f3d25c6ffd2c75 (diff)
downloadjquery-f96bf1041553775a94c1034c97e253e350217173.tar.gz
jquery-f96bf1041553775a94c1034c97e253e350217173.zip
Integration of Mike Alsup's excellent form serialization code. The benefits are as follows:
- New method: .serializeArray() This returns an array of name/value pairs representing the contents of a form, or individual input elements. - Enhancement: .serialize() The results are correct now (as opposed to the mess from before), and allows you to serializes forms directly (rather than just the input elements). - Enhancement: .val() This now returns the correct value when dealing wih selects. Additionally, when dealing with multiple selects, it returns an array of values. Based upon Mike's code: http://malsup.com/jquery/form/comp/form.js and test suite: http://malsup.com/jquery/form/comp/test.html
Diffstat (limited to 'src/jquery/jquery.js')
-rw-r--r--src/jquery/jquery.js29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index 9e59f9dad..d5a32e24d 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -306,9 +306,32 @@ jQuery.fn = jQuery.prototype = {
},
val: function( val ) {
- return val == undefined ?
- ( this.length ? this[0].value : null ) :
- this.attr( "value", val );
+ if ( val == undefined ) {
+ if ( this.length ) {
+ var elem = this[0];
+
+ // We need to handle select boxes special if ( jQuery.nodeName(elem, "select") ) { var index = elem.selectedIndex,
+ a = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[i]; if ( option.selected ) { // Get the specifc value for the option var val = jQuery.browser.msie && !option.attributes["value"].specified ? option.text : option.value;
+
+ // We don't need an array for one selects if ( one )
+ return val;
+
+ // Multi-Selects return an array a.push(val); } }
+ return a;
+
+ // Everything else, we just grab the value } else
+ return this[0].value.replace(/\r/g, "");
+ }
+ } else
+ return this.attr( "value", val );
},
html: function( val ) {