mirror of
https://github.com/jquery-validation/jquery-validation.git
synced 2025-12-20 09:11:40 +01:00
Bypass validation for buttons with 'formnovalidate' attribute (same as class="cancel"). Closes gh-623
This commit is contained in:
committed by
Jörn Zaefferer
parent
ff26f320c6
commit
bcff73ad84
5
jquery.validate.js
vendored
5
jquery.validate.js
vendored
@@ -45,6 +45,11 @@ $.extend($.fn, {
|
|||||||
if ( $(event.target).hasClass("cancel") ) {
|
if ( $(event.target).hasClass("cancel") ) {
|
||||||
validator.cancelSubmit = true;
|
validator.cancelSubmit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
|
||||||
|
if ( $(event.target).attr("formnovalidate") !== undefined ) {
|
||||||
|
validator.cancelSubmit = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// validate the form on submit
|
// validate the form on submit
|
||||||
|
|||||||
@@ -310,6 +310,14 @@
|
|||||||
|
|
||||||
<input type="text" id="rangeTextValid" name="rangeTextValid" min="AAA" max="ZZZ" value="NNN"/>
|
<input type="text" id="rangeTextValid" name="rangeTextValid" min="AAA" max="ZZZ" value="NNN"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<form id="bypassValidation">
|
||||||
|
<input type="text" required/>
|
||||||
|
<input id="normalSubmit" type="submit" value="submit"/>
|
||||||
|
<input id="bypassSubmitWithCancel" type="submit" class="cancel" value="bypass1"/>
|
||||||
|
<input id="bypassSubmitWithNoValidate1" type="submit" formnovalidate value="bypass1"/>
|
||||||
|
<input id="bypassSubmitWithNoValidate2" type="submit" formnovalidate="formnovalidate" value="bypass2"/>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
29
test/test.js
29
test/test.js
@@ -814,6 +814,33 @@ test("validating groups settings parameter", function() {
|
|||||||
equal(validate.groups["input-six"], "stringGroup");
|
equal(validate.groups["input-six"], "stringGroup");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('bypassing validation on form submission',function () {
|
||||||
|
var form = $("#bypassValidation");
|
||||||
|
var normalSubmission = $("form#bypassValidation :input[id=normalSubmit]");
|
||||||
|
var bypassSubmitWithCancel = $("form#bypassValidation :input[id=bypassSubmitWithCancel]");
|
||||||
|
var bypassSubmitWithNoValidate1 = $("form#bypassValidation :input[id=bypassSubmitWithNoValidate1]");
|
||||||
|
var bypassSubmitWithNoValidate2 = $("form#bypassValidation :input[id=bypassSubmitWithNoValidate2]");
|
||||||
|
|
||||||
|
var $v = form.validate({
|
||||||
|
debug : true
|
||||||
|
});
|
||||||
|
|
||||||
|
bypassSubmitWithCancel.click();
|
||||||
|
equal($v.numberOfInvalids(), 0, "Validation was bypassed using CSS 'cancel' class.");
|
||||||
|
$v.resetForm();
|
||||||
|
|
||||||
|
bypassSubmitWithNoValidate1.click();
|
||||||
|
equal($v.numberOfInvalids(), 0, "Validation was bypassed using blank 'formnovalidate' attribute.");
|
||||||
|
$v.resetForm();
|
||||||
|
|
||||||
|
bypassSubmitWithNoValidate2.click();
|
||||||
|
equal($v.numberOfInvalids(), 0, "Validation was bypassed using 'formnovalidate=\"formnovalidate\"' attribute.");
|
||||||
|
$v.resetForm();
|
||||||
|
|
||||||
|
normalSubmission.click();
|
||||||
|
equal($v.numberOfInvalids(), 1, "Validation failed correctly");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
module("misc");
|
module("misc");
|
||||||
|
|
||||||
@@ -1422,3 +1449,5 @@ test("Min and Max strings set by attributes valid", function() {
|
|||||||
var label = $('#ranges label');
|
var label = $('#ranges label');
|
||||||
equal( label.text(), "", "Correct error label" );
|
equal( label.text(), "", "Correct error label" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user