diff --git a/examples/burger/main.go b/examples/burger/main.go index 6bfa25d8..1835a410 100644 --- a/examples/burger/main.go +++ b/examples/burger/main.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "os" "strconv" @@ -124,6 +125,12 @@ func main() { Value(&order.Name). Title("What's your name?"). Placeholder("Margaret Thatcher"). + Validate(func(s string) error { + if s == "Frank" { + return errors.New("no franks, sorry") + } + return nil + }). Description("For when your order is ready."), huh.NewText(). diff --git a/field_input.go b/field_input.go index e29299dc..dc1dbc9d 100644 --- a/field_input.go +++ b/field_input.go @@ -162,8 +162,18 @@ func (i *Input) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch { case key.Matches(msg, i.keymap.Prev): + value := i.textinput.Value() + i.err = i.validate(value) + if i.err != nil { + return i, nil + } cmds = append(cmds, prevField) case key.Matches(msg, i.keymap.Next): + value := i.textinput.Value() + i.err = i.validate(value) + if i.err != nil { + return i, nil + } cmds = append(cmds, nextField) } }