Базовый пример с неработающим vee-validate

Я пытаюсь заставить простую страницу проверки формы работать с vee-validate. Однако что-то, похоже, сломано, и я не уверен, что именно я делаю не так.

Тег span отображается как необработанный HTML:

Базовый пример с неработающим vee-validate

Разметка:

<!DOCTYPE html>
<html>
   <head>
      <script type='text/JavaScript' src = "https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      <script type='text/JavaScript' src = "https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
   </head>
   <body>
      <script type='text/JavaScript'>
         Vue.use(VeeValidate); // good to go.
         new Vue({
           el: '#app',
           data: {
              email_primary: null
           }
         });
      </script>


      <div id = "app">
         <form action='#' method='POST'>
            <input v-validate = "'required|email'" :class = "{'input': true, 'is-danger': errors.has('email_primary') }" name = "email_primary" type = "text" placeholder = "email_primary">
            <span v-show = "errors.has('email_primary')" class = "help is-danger">{{ errors.first('email_primary') }}</span>
            <button class = "button is-link" name='submitform' value='go'>Submit</button>
         </form>
      </div>

    </body>
</html>

Скрипка.

Что мне нужно сделать, чтобы vee-validate работал должным образом?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
3 650
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблемы)

Похоже, было несколько вещей, но главным виновником было то, что атрибут type во всех тегах скрипта был установлен на text/JavaScript, что недопустимо. Лучше либо не устанавливать тип, либо, если вы это сделаете, установить его на text/javascript.

Кроме того, поскольку вы используете div#app в качестве шаблона, а не просто корневого элемента, я добавил соответствующие атрибуты.

Наконец, всегда загружайте свой javascript после свой html.

Фиксированный код

<!DOCTYPE html>
<html>
   <head>
      
   </head>
   <body>
       <div id = "app">
         <form action='#' method='POST'>
            <input v-validate = "'required|email'" :class = "{'input': true, 'is-danger': errors.has('email_primary') }" name = "email_primary" type = "text" placeholder = "email_primary">
            <span v-show = "errors.has('email_primary')" class = "help is-danger">{{ errors.first('email_primary') }}</span>
            <button class = "button is-link" name='submitform' value='go'>Submit</button>
         </form>
      </div>
      <script src = "https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      <script src = "https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
      <script>
         Vue.use(VeeValidate); // good to go.
         new Vue({
           el: "#app",
           template: '#app',
           data() {
            return {
              email_primary: null
            };
           }
         });
      </script>
    </body>
</html>

Также файл рабочий jsfiddle.

Надеюсь, это поможет!

Большое спасибо, это направило меня в правильном направлении. Не могли бы вы немного объяснить по этому поводу: div#app as a template rather than just the root element. Что вы подразумеваете под корневым элементом? Есть ли лучший способ закодировать это?

a coder 20.06.2018 05:17

@acoder, как правило, вы бы построили его так, чтобы все ваши компоненты были автономными в своем собственном файле, включая HTML, CSS и логику vue. vue-cli - отличный инструмент для начала. Он создаст для вас новый проект с примерами логики, чтобы вы могли прочувствовать его.

Derek Pollard 20.06.2018 05:19

То, что вы описали выше (один файл со специальной проверкой формы), - это то, что я ищу (я использую Bulma html framework fwiw). Ясно, что я новичок в vee-validate, так что это полезно.

a coder 20.06.2018 15:29

Еще раз спасибо за ответ, только что реализованный и функционирующий и очень хорошо выглядит с Bulma.

a coder 20.06.2018 18:49

Нет проблем, я рад, что смог помочь!

Derek Pollard 20.06.2018 18:49

sidenote, Еще одна отличная библиотека пользовательского интерфейса, если вы ее ищете, это Vuetify: vuetifyjs.com/en

Derek Pollard 20.06.2018 18:50

Только что нашел подобное расширение пользовательского интерфейса для Bulma: buefy.github.io

a coder 20.06.2018 20:09

вы знаете, как использовать vee-validate с базовым раскрывающимся списком?

a coder 20.06.2018 20:26

Другие вопросы по теме