Core: dataRules method to convert value to number for number inputs

Updated dataRules method to convert value to number for number inputs.
Proposed fix for #1378
This commit is contained in:
Zen Chua
2015-02-03 17:38:05 +08:00
committed by Jörn Zaefferer
parent 64cb211178
commit fa5f69c529

View File

@@ -1033,12 +1033,26 @@ $.extend( $.validator, {
},
dataRules: function( element ) {
var method, value,
rules = {}, $element = $( element );
var rules = {},
$element = $( element ),
type = element.getAttribute( "type" ),
method, value;
for ( method in $.validator.methods ) {
value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
if ( value !== undefined ) {
// convert the value to a number for number inputs, and for text for backwards compability
// allows type="date" and others to be compared as strings
if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
value = Number( value );
}
if ( value || value === 0 ) {
rules[ method ] = value;
} else if ( type === method && type !== "range" ) {
// exception: the jquery validate 'range' method
// does not test for the html5 'range' type
rules[ method ] = true;
}
}
return rules;