diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index e4810fd7f..e972c3b7c 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -281,6 +281,15 @@ export interface FormOptions< TOnSubmit, TOnSubmitAsync > + /** + * Specifies which validation type to use on the first submission attempt + */ + validationOnFirstAttempt?: ValidationCause; + + /** + * Specifies which validation type to use on subsequent submission attempts + */ + validationOnConsequentAttempts?: ValidationCause; /** * A function to be called when the form is submitted, what should happen once the user submits a valid form returns `any` or a promise `Promise` */ @@ -1500,7 +1509,12 @@ export class FormApi< this.baseStore.setState((prev) => ({ ...prev, isSubmitting: false })) } - await this.validateAllFields('submit') + // + const validationType = this.state.submissionAttempts === 1 + ? this.options.validationOnFirstAttempt ?? 'submit' + : this.options.validationOnConsequentAttempts ?? 'submit'; + + await this.validateAllFields(validationType) if (!this.state.isFieldsValid) { done() @@ -1511,7 +1525,7 @@ export class FormApi< return } - await this.validate('submit') + await this.validate(validationType) // Fields are invalid, do not submit if (!this.state.isValid) {