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") ) {
|
||||
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
|
||||
|
||||
@@ -310,6 +310,14 @@
|
||||
|
||||
<input type="text" id="rangeTextValid" name="rangeTextValid" min="AAA" max="ZZZ" value="NNN"/>
|
||||
</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>
|
||||
|
||||
</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");
|
||||
});
|
||||
|
||||
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");
|
||||
|
||||
@@ -1422,3 +1449,5 @@ test("Min and Max strings set by attributes valid", function() {
|
||||
var label = $('#ranges label');
|
||||
equal( label.text(), "", "Correct error label" );
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user