# 🦉 Form Input Bindings 🦉 It is very common to need to be able to read the value out of an html `input` (or `textarea`, or `select`) in order to use it (note: it does not need to be in a form!). A possible way to do this is to do it by hand: ```js class Form extends owl.Component { state = useState({ text: "" }); _updateInputValue(event) { this.state.text = event.target.value; } } ``` ```xml
``` This works. However, this requires a little bit of _plumbing_ code. Also, the plumbing code is slightly different if you need to interact with a checkbox, or with radio buttons, or with select tags. To help with this situation, Owl has a builtin directive `t-model`: its value should be an observed value in the component (usually `state.someValue`). With the `t-model` directive, we can write a shorter code, equivalent to the previous example: ```js class Form extends owl.Component { state = { text: "" }; } ``` ```xml
``` The `t-model` directive works with ``, ``, ``, `