Skip to content
On this page

setValue

Sets the value of a field programmatically, it does not trigger any validation, to do so make use of triggerValidation.

INFO

setValue does trigger the interceptor, so that you have maximum control over the field that is being set.

Demo

Coming soon...

Usage

vue
<template>
  <form>
    <input type="text" v-bind="register('name')" />
    <input type="email" v-bind="register('email')" />
    <button type="submit">Submit</button>
  </form>
</template>
<script setup lang="ts">
import { watch } from 'vue'
import { useFormHandler } from 'vue-form-handler'

const { register, setValue, values } = useFormHandler()

watch(
  () => values.name,
  (curr: string | null) => {
    setValue('email', curr ? `${curr.toLowerCase().trim()}@mail.com` : '')
  }
)
</script>

Simple and easy assignments to any field, with no extra overhead or issues.

setValue with validation trigger

vue
<template>
    <form>
        <input type="text" v-bind="register('name')" />
        <input type="email" v-bind="register('email',{
            pattern: {
                value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
                message: 'Email field is not a valid regex'
            }
        })" />
        <button type="submit">Submit</button>
    </form>
</template>
<script setup lang="ts" >
import { watch } from 'vue'
import { useFormHandler } from 'vue-form-handler'

const { register, setValue, values, triggerValidation } = useFormHandler()

watch(
    () => values.name,
    (curr: string|null) => {
        await setValue('email', curr
            ? `${curr.toLowerCase().trim()}@mail.com`
            : 'Set a name first')
        triggerValidation('email')
    }
)
</script>

Just calling triggerValidation after a value is set ensures the validations are fired, remember to use await on setValue if you're expecting to intercept the value change so that it does trigger the validation when it should.

Type Declarations

ts
export type SetValue = (name: keyof T, value?: any) => Promise<void>

Released under the MIT License.