Skip to main content Skip to docs navigation

Form 7 Validation Strategies

ValidateBeforeUserInput (always validates)

Error: input less than 5 characters
Min. 5 chars
scala
new DefaultForm7() {
  validateBeforeUserInput()
  override lazy val rootField: F7Field = F7VerticalField()(
    new F7StringField().label("Name")
      .addValidation(_.currentValue.length >= 5, _ => <span>Error: input less than 5 characters</span>)
      .help("Min. 5 chars")
    , new F7IntOptField().label("Integer field")
    , new F7SubmitButtonField(implicit fsc => BSBtn().BtnPrimary.lbl("Submit").btn.d_block.w_100)
  )
}.render()

ValidateEachFieldAfterUserInput (validates immediately after input in a field)

Min. 5 chars
scala
new DefaultForm7() {
  validateEachFieldAfterUserInput()
  override lazy val rootField: F7Field = F7VerticalField()(
    new F7StringField().label("Name (type abc and move to next field)")
      .addValidation(_.currentValue.length >= 5, _ => <span>Error: input less than 5 characters</span>)
      .help("Min. 5 chars")
    , new F7IntOptField().label("Integer field")
    , new F7SubmitButtonField(implicit fsc => BSBtn().BtnPrimary.lbl("Submit").btn.d_block.w_100)
  )
}.render()

ValidateOnAttemptSubmitOnly (only validates on submit)

Min. 5 chars
scala
new DefaultForm7() {
  validateOnAttemptSubmitOnly()
  override lazy val rootField: F7Field = F7VerticalField()(
    new F7StringField().label("Name")
      .addValidation(_.currentValue.length >= 5, _ => <span>Error: input less than 5 characters</span>)
      .help("Min. 5 chars")
    , new F7IntOptField().label("Integer field")
    , new F7SubmitButtonField(implicit fsc => BSBtn().BtnPrimary.lbl("Submit").btn.d_block.w_100)
  )
}.render()