I’d like to trigger an action when a specific option is selected in select
tag. @click
works on every other tags, but when it doesn’t seem to work on option
. Is there a directive like @selected
where I can trigger an action when an option
is selected?
<html> <head> <script defer src="https://unpkg.com/alpinejs@3.3.4/dist/cdn.min.js"></script> </head> <body> <div x-data="{}"> <!-- this does NOT work --> <select> <option @click="alert('option 1');">option 1</option> <option @click="alert('option 2');">option 2</option> <option @click="alert('option 3');">option 3</option> </select> <!-- this works --> <button @click="alert('button clicked');">Click</button> </div> </body> </html>
Advertisement
Answer
You can’t attach events to <option>
tags, but you can attach a change
event to the <select>
tag and use the value of the selected option.
<select x-on:change="alert($el.value)"> <option>option 1</option> <option>option 2</option> <option>option 3</option> </select>