mirror of
https://github.com/tenrok/vue-select.git
synced 2026-05-17 02:29:37 +03:00
add required validation doc (#868)
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
<template>
|
||||||
|
<form @submit.stop="onSubmit">
|
||||||
|
<v-select :options="books" label="title" v-model="selected">
|
||||||
|
<template #search="{attributes, events}">
|
||||||
|
<input
|
||||||
|
:required="!selected"
|
||||||
|
class="vs__search"
|
||||||
|
v-bind="attributes"
|
||||||
|
v-on="events"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
|
||||||
|
<input type="submit">
|
||||||
|
</form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import books from '../data/books'
|
||||||
|
export default {
|
||||||
|
data: () => ({
|
||||||
|
books,
|
||||||
|
selected: null,
|
||||||
|
}),
|
||||||
|
methods: {
|
||||||
|
onSubmit() {
|
||||||
|
alert('Submitted!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-select {
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"] {
|
||||||
|
margin-left: 1rem;
|
||||||
|
background: #44ae7d;
|
||||||
|
border: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #fff;
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -117,6 +117,7 @@ module.exports = {
|
|||||||
title: 'Digging Deeper',
|
title: 'Digging Deeper',
|
||||||
collapsable: false,
|
collapsable: false,
|
||||||
children: [
|
children: [
|
||||||
|
['guide/validation', 'Validation'],
|
||||||
['guide/vuex', 'Vuex'],
|
['guide/vuex', 'Vuex'],
|
||||||
['guide/ajax', 'AJAX'],
|
['guide/ajax', 'AJAX'],
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
## Required
|
||||||
|
|
||||||
|
If you need to ensure that a selection is made before a form is submitted, you can
|
||||||
|
use the `required` attribute in combination with the `search` scoped slot in order
|
||||||
|
to do so.
|
||||||
|
|
||||||
|
However, the `search` input within the component does not actually store a value, so
|
||||||
|
simply adding the `required` attribute won't work. Instead, we'll bind the attribute
|
||||||
|
dynamically, so that it's only present if we don't have a selection.
|
||||||
|
|
||||||
|
<ValidationRequired />
|
||||||
|
|
||||||
|
```html
|
||||||
|
<v-select :options="books" label="title" v-model="selected">
|
||||||
|
<template #search="{attributes, events}">
|
||||||
|
<input
|
||||||
|
class="vs__search"
|
||||||
|
:required="!selected"
|
||||||
|
v-bind="attributes"
|
||||||
|
v-on="events"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user