From be292d051e9f30837436756bd5b6d104730bf1dd Mon Sep 17 00:00:00 2001 From: Brahim Arkni Date: Sat, 2 Sep 2017 16:53:45 +0100 Subject: [PATCH 1/2] Test: required method should return false for null & undefined values --- test/rules.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/rules.js b/test/rules.js index cfd9f8577..1be57bf49 100644 --- a/test/rules.js +++ b/test/rules.js @@ -402,3 +402,23 @@ QUnit.test( "rules() - on unexpected input", function( assert ) { result = nonFormElement.rules( "add", "whatever" ); assert.deepEqual( result, undefined, "can work on a non-form element" ); } ); + +QUnit.test( "required method should return false for undefined & null values", function( assert ) { + var username = $( "#usernamec" ), + urlc = $( "#urlc" ), + v = $( "#testForm1clean" ).validate( { + rules: { + username: { + required: true, + normalizer: function() { return null; } + }, + urlc: { + required: true, + normalizer: function() { return undefined; } + } + } + } ); + + assert.notOk( v.element( username ), "The username element should be invalid" ); + assert.notOk( v.element( urlc ), "The urlc element should be invalid" ); +} ); From 83bfd48d03493926007d6e284c0ff0acfa737f73 Mon Sep 17 00:00:00 2001 From: Brahim Arkni Date: Sat, 2 Sep 2017 16:59:31 +0100 Subject: [PATCH 2/2] Core: guard against null & undefined values in required method An input element will never have undefined or null as value but the normalizer may return null or undefined for an element. Also, jQuery (< 3.x) returns `null` for select element with the multiple attribute set if no options are selected. As a result, the required method should guard against that. --- src/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 7eec1dc37..11c57a027 100644 --- a/src/core.js +++ b/src/core.js @@ -1349,7 +1349,7 @@ $.extend( $.validator, { if ( this.checkable( element ) ) { return this.getLength( value, element ) > 0; } - return value.length > 0; + return value !== undefined && value !== null && value.length > 0; }, // https://jqueryvalidation.org/email-method/ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy