New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LessThan and LessThanEqual methods don't work correctly for negative numbers #2164
Comments
This is still an issue. |
Hi @Laura-Guillory, Thanks for opening this issue. I'll mark this issue as a bug for now. I didn't have any look at it, but will revisit when I get some free time. |
I bet that it's always doing a string compare. Somehow, the data type has to be determined (int, float) before a compare is done. This will have to be done to the |
You're right. This happens in this example "1000" <= "500", you expect to be false, but JS returns true. That's why this validation fails. The solution for these validations is: $.validator.addMethod( "lessThanEqual", function( value, element, param ) {
var target = $( param );
if ( this.settings.onfocusout && target.not( ".validate-lessThanEqual-blur" ).length ) {
target.addClass( "validate-lessThanEqual-blur" ).on( "blur.validate-lessThanEqual", function() {
$( element ).valid();
} );
}
var referenceValue = target.val();
if ($.isNumeric(value) && $.isNumeric(referenceValue)) {
value = parseFloat(value);
referenceValue = parseFloat(referenceValue);
return value <= referenceValue;
}
return value <= target.val();
}, "Please enter a lesser value." ); In the return section, you only have to change the symbol for the correct one. This is for lessThanEqual, lessThan (<), greaterThan (>) and greaterThanEqual (>=) |
Subject of the issue
When negative numbers are entered in an input field with a lessThan or lessThanEqual rule applied, the form will pass validation when it shouldn't, and fail validation when it should pass - as if the rule was actually greaterThan. What seems to be happening is that the absolute value is used (-1 is treated as 1, for example). So if we have -2 compared to -1, -1 is treated as being "less than" -2, even though -2 < -1.
Your environment
jquery-validate
: Current repository, not released yetSteps to reproduce
lessThan with negative numbers:
lessThanEqual with negative numbers:
Expected behaviour
In both instances, I would expect validation to pass, since -2 < -1.
Actual behaviour
Validation fails with the message: "Please enter a lesser value."
If the numbers are swapped, validation will pass which is incorrect.
The text was updated successfully, but these errors were encountered: