Skip to content

Commit 69831a0

Browse files
hazzikjzaefferer
authored andcommitted
Remove clearing as numbers of min, max and range rules. Fixes jquery-validation#455. Closes jquery-validationgh-528.
These rules are fully suitable to check any comparable JavaScript objects such as strings or dates. Also clearing prevents HTML5 date input fields to work when these rules are coming from HTML.
1 parent a047634 commit 69831a0

File tree

4 files changed

+138
-4
lines changed

4 files changed

+138
-4
lines changed

jquery.validate.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -919,12 +919,12 @@ $.extend($.validator, {
919919
});
920920

921921
// clean number parameters
922-
$.each(["minlength", "maxlength", "min", "max"], function() {
922+
$.each(['minlength', 'maxlength'], function() {
923923
if ( rules[this] ) {
924924
rules[this] = Number(rules[this]);
925925
}
926926
});
927-
$.each(["rangelength", "range"], function() {
927+
$.each(['rangelength'], function() {
928928
var parts;
929929
if ( rules[this] ) {
930930
if ( $.isArray(rules[this]) ) {

test/index.html

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ <h3></h3>
264264
<input type="checkbox" id="checkable3" name="checkablesgroup" />
265265
</form>
266266

267-
268267
<form id="subformRequired">
269268
<div class="billingAddressControl">
270269
<input type="checkbox" id="bill_to_co" name="bill_to_co" class="toggleCheck" checked="checked" style="width: auto;" tabindex="1" />
@@ -296,6 +295,21 @@ <h3></h3>
296295
<label id="targetLabel" class="error" for="updateLabelInput">Some server-side error</label>
297296
</form>
298297

298+
<form id="ranges">
299+
<input type="text" id="minDateInvalid" name="minDateInvalid" min="2012-12-21" value="2012-11-21"/>
300+
<input type="text" id="maxDateInvalid" ngame="maxDateInvalid" max="2012-12-21" value="2013-01-21"/>
301+
<input type="text" id="rangeDateInvalidGreater" name="rangeDateInvalidGreater" min="2012-11-21" max="2013-01-21" value="2013-02-21"/>
302+
<input type="text" id="rangeDateInvalidLess" name="rangeDateInvalidLess" min="2012-11-21" max="2013-01-21" value="2012-10-21"/>
303+
304+
<input type="text" id="minDateValid" name="minDateValid" min="2012-11-21" value="2012-12-21"/>
305+
<input type="text" id="maxDateValid" name="maxDateValid" max="2013-01-21" value="2012-12-21"/>
306+
<input type="text" id="rangeDateValid" name="rangeDateValid" min="2012-11-21" max="2013-01-21" value="2012-12-21"/>
307+
308+
<input type="text" id="rangeTextInvalidGreater" name="rangeTextInvalidGreater" min="BBB" max="YYY" value="ZZZ"/>
309+
<input type="text" id="rangeTextInvalidLess" name="rangeTextInvalidLess" min="BBB" max="YYY" value="AAA"/>
310+
311+
<input type="text" id="rangeTextValid" name="rangeTextValid" min="AAA" max="ZZZ" value="NNN"/>
312+
</form>
299313
</div>
300314

301315
</body>

test/rules.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ test("rules(), add and remove", function() {
205205
deepEqual( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" });
206206

207207
$("#v2-i5").addClass("email").attr({min: 5});
208-
deepEqual( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: "123" });
208+
deepEqual( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: "5", customMethod1: "123" });
209209

210210
$("#v2-i5").removeClass("required email").removeAttrs("minlength maxlength customMethod1 min");
211211
deepEqual( $("#v2-i5").rules(), {});

test/test.js

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,3 +1302,123 @@ test("Updates pre-existing label if has error class", function() {
13021302
// new label wasn't created
13031303
equal( labelsBefore, labelsAfter );
13041304
});
1305+
1306+
test("Min date set by attribute", function() {
1307+
var form = $('#ranges');
1308+
var name = $('#minDateInvalid');
1309+
var v = form.validate();
1310+
1311+
form.get(0).reset();
1312+
name.valid();
1313+
1314+
var label = $('#ranges label');
1315+
equal( label.text(), "Please enter a value greater than or equal to 2012-12-21.", "Correct error label" );
1316+
});
1317+
1318+
test("Max date set by attribute", function() {
1319+
var form = $('#ranges');
1320+
var name = $('#maxDateInvalid');
1321+
var v = form.validate();
1322+
1323+
form.get(0).reset();
1324+
name.valid();
1325+
1326+
var label = $('#ranges label');
1327+
equal( label.text(), "Please enter a value less than or equal to 2012-12-21.", "Correct error label" );
1328+
});
1329+
1330+
test("Min and Max date set by attributes greater", function() {
1331+
var form = $('#ranges');
1332+
var name = $('#rangeDateInvalidGreater');
1333+
var v = form.validate();
1334+
1335+
form.get(0).reset();
1336+
name.valid();
1337+
1338+
var label = $('#ranges label');
1339+
equal( label.text(), "Please enter a value less than or equal to 2013-01-21.", "Correct error label" );
1340+
});
1341+
1342+
test("Min and Max date set by attributes less", function() {
1343+
var form = $('#ranges');
1344+
var name = $('#rangeDateInvalidLess');
1345+
var v = form.validate();
1346+
1347+
form.get(0).reset();
1348+
name.valid();
1349+
1350+
var label = $('#ranges label');
1351+
equal( label.text(), "Please enter a value greater than or equal to 2012-11-21.", "Correct error label" );
1352+
});
1353+
1354+
test("Min date set by attribute valid", function() {
1355+
var form = $('#ranges');
1356+
var name = $('#minDateValid');
1357+
var v = form.validate();
1358+
1359+
form.get(0).reset();
1360+
name.valid();
1361+
1362+
var label = $('#ranges label');
1363+
equal( label.text(), "", "Correct error label" );
1364+
});
1365+
1366+
test("Max date set by attribute valid", function() {
1367+
var form = $('#ranges');
1368+
var name = $('#maxDateValid');
1369+
var v = form.validate();
1370+
1371+
form.get(0).reset();
1372+
name.valid();
1373+
1374+
var label = $('#ranges label');
1375+
equal( label.text(), "", "Correct error label" );
1376+
});
1377+
1378+
test("Min and Max date set by attributes valid", function() {
1379+
var form = $('#ranges');
1380+
var name = $('#rangeDateValid');
1381+
var v = form.validate();
1382+
1383+
form.get(0).reset();
1384+
name.valid();
1385+
1386+
var label = $('#ranges label');
1387+
equal( label.text(), "", "Correct error label" );
1388+
});
1389+
1390+
test("Min and Max strings set by attributes greater", function() {
1391+
var form = $('#ranges');
1392+
var name = $('#rangeTextInvalidGreater');
1393+
var v = form.validate();
1394+
1395+
form.get(0).reset();
1396+
name.valid();
1397+
1398+
var label = $('#ranges label');
1399+
equal( label.text(), "Please enter a value less than or equal to YYY.", "Correct error label" );
1400+
});
1401+
1402+
test("Min and Max strings set by attributes less", function() {
1403+
var form = $('#ranges');
1404+
var name = $('#rangeTextInvalidLess');
1405+
var v = form.validate();
1406+
1407+
form.get(0).reset();
1408+
name.valid();
1409+
1410+
var label = $('#ranges label');
1411+
equal( label.text(), "Please enter a value greater than or equal to BBB.", "Correct error label" );
1412+
});
1413+
1414+
test("Min and Max strings set by attributes valid", function() {
1415+
var form = $('#ranges');
1416+
var name = $('#rangeTextValid');
1417+
var v = form.validate();
1418+
1419+
form.get(0).reset();
1420+
name.valid();
1421+
1422+
var label = $('#ranges label');
1423+
equal( label.text(), "", "Correct error label" );
1424+
});

0 commit comments

Comments
 (0)