У меня есть чат, и я не хочу, чтобы люди отправляли пустые сообщения, поэтому я хотел бы, чтобы мой вклад стал обязательным. Спасибо за вашу помощь.
Я пытался поставить "required='required'" в строку ввода, я также пробовал veeValidate, но это сломало мой чат, когда я его использовал, я также пытался поставить "Required = true" в свойствах и данных, но без хорошего результата
Это ChatForm.vue
<template>
<div class = "input-group" >
<input id = "btn-input" type = "text" name = "message" class = "form-control input-sm" placeholder = "Ecrire..." v-model = "newMessage" @keyup.enter = "sendMessage">
<span class = "input-group-btn">
<button class = "btn btn-primary btn-sm" id = "btn-chat" @click = "sendMessage">
✓
</button>
</span>
</div>
</template>
<script>
export default {
props: ['user'],
data() {
return {
newMessage: '',
}
},
methods: {
sendMessage() {
this.$emit('messagesent', {
user: this.user,
message: this.newMessage
});
setTimeout(function() {
const messages = document.getElementById('mess_cont');
messages.scrollTop = messages.scrollHeight;
}, 200);
this.newMessage = '';
}
}
}
</script>
А это моя форма в app.blade.php
<div id = "app" class = "container-chat">
<div class = "row">
<div class = "col-md-12 col-md-offset-2">
<div class = "col-md-12 col-md-offset-2">
<div class = "panel-body panel-content" id = "mess_cont">
<chat-messages id = "mess" :messages = "messages" :currentuserid = "{{Auth::user()->id}}"></chat-messages>
</div>
<div class = "panel-footer">
<chat-form
v-on:messagesent = "addMessage"
:user = "{{ Auth::user() }}"
></chat-form>
</div>
</div>
</div>
</div>
</div>
да и тоже не работает
Не могли бы вы опубликовать ошибку, с которой вы столкнулись для Vuelidate? ниже приведен пример, если это работает для вас: import Vuelidate from 'vuelidate'; import { required } from 'vuelidate/lib/validators'; export default { validations: { Message: { required } } }
Я имею в виду, что у меня нет ошибки, но мой чат исчезает, когда я им пользуюсь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Есть несколько вещей, которые я бы сделал по-другому.
1/ Оберните форму чата тегом и выполните метод sendMessage() при отправке. Это даст вашим пользователям более приятный опыт, так как они могут просто отправить сообщение.
2/Преобразуйте кнопку в кнопку отправки, чтобы она вызывала событие form.submit.
3/Вы можете легко отключить кнопку, проверив, есть ли у newMessage содержимое. Я не думаю, что вам нужна проверка или что-то еще, чтобы добиться этого; для чего-то столь же простого, как форма чата, вашему пользователю не нужно гораздо больше отзывов, чем видеть отключенную кнопку, чтобы понять, что ему нужно что-то написать в первую очередь.
4/ в методе addMessage вы можете просто проверить содержимое newMessage и ничего не делать, когда оно пустое. Это совершенно нормально, потому что вы уже намекнули пользователю, отключив кнопку.
Я думаю, что это тонкий способ, которым вы направляете своего пользователя, но не переусердствуйте. Надеюсь это поможет.
Спасибо за вашу помощь, я постараюсь дать вам обратную связь, как только смогу!
Попробуйте изменить свой ChatForm.vue следующим образом:
<template>
<form @submit.prevent = "sendMessage">
<div class = "input-group" >
<input id = "btn-input" type = "text" name = "message" class = "form-control input-sm" placeholder = "Ecrire..." v-model = "newMessage" required>
<span class = "input-group-btn">
<button class = "btn btn-primary btn-sm" type = "submit" id = "btn-chat">
✓
</button>
</span>
</div>
</template>
Вы неправильно обрабатываете input, требуемый input должен находиться внутри form, а ключевое слово required предотвратит отправку формы, если поле input пусто.
Добавьте атрибуты имени ко всем элементам формы. У некоторых элементов в моей форме был атрибут имени, а у некоторых - нет. Элемент, у которого были атрибуты имени, работал правильно, но тот, у которого не было имени, не работал.
Вы пытались обернуть свой ввод внутри формы?