Core: Call to resetInternals removed in remote validation callback (#2242)

* Core: Call to resetInternals removed in remote validation callback

* Core: Add unit test for issue #2150 fix

* Core: fix code style errors

Co-authored-by: leonardospina <leo@babieleo.it>
Co-authored-by: Julien Tschäppät <julien.tschappat@smartliberty.ch>
This commit is contained in:
Leonardo Spina
2023-01-24 11:37:07 +00:00
committed by GitHub
parent 13b859e357
commit cfe74a19b6
3 changed files with 35 additions and 1 deletions

View File

@@ -1607,7 +1607,6 @@ $.extend( $.validator, {
validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
if ( valid ) {
submitted = validator.formSubmitted;
validator.resetInternals();
validator.toHide = validator.errorsFor( element );
validator.formSubmitted = submitted;
validator.successList.push( element );

View File

@@ -72,6 +72,10 @@
<input type="text" data-rule-required="true" title="buga" name="lastname" id="lastname">
<input type="text" data-rule-required="true" title="something" name="something" id="something" value="something">
</form>
<form id="issue2150TestForm">
<input id="remoteTestedInput" type="text" name="remoteTestedInput" value="test" /><br/>
<input id="requiredInput" type="text" name="requiredInput" value="" />
</form>
<form id="testForm1clean">
<input title="buga" name="firstnamec" id="firstnamec">
<label id="errorFirstnamec" for="firstnamec" class="error">error for firstname</label>

View File

@@ -2060,6 +2060,37 @@ QUnit.test( "[Remote rule] #1508: Validation fails to trigger when next field is
check( "abc" );
} );
$.mockjax( {
url: "issue2150TestForm.action",
response: function() {
this.responseText = "true";
},
responseTime: 1
} );
QUnit.test( "Remote validation should not reset existing errors (#2150)", function( assert ) {
assert.expect( 3 );
var done = assert.async();
$( "#issue2150TestForm" ).validate( {
rules: {
remoteTestedInput: {
remote: "issue2150TestForm.action"
},
requiredInput: "required"
}
} );
assert.equal( $( "#requiredInput" ).attr( "class" ), undefined, "#requiredInput should not have any class" );
var isValid = $( "#issue2150TestForm" ).valid();
setTimeout( function() {
assert.equal( $( "#requiredInput" ).attr( "class" ), "error", "#requiredInput should have \"error\" class" );
assert.equal( isValid, false, "Form should have error" );
done();
} );
} );
QUnit.test( "validate checkbox on click", function( assert ) {
function errors( expected, message ) {
assert.equal( v.size(), expected, message );