為什么我的提交表單無法在Vue3中與BalmUI一起使用

我正在嘗試創建一個注冊頁面,但我的sybmit無法運行。有人知道怎么修嗎?這是我的密碼

<template>
  <div>
    <h1>Register</h1>
    <ui-form
      type="|"
      item-margin-bottom="16"
      action-align="center"
      v-on:submit.prevent="register()"
    >
      <template #default="{ actionClass }">
        <ui-form-field>
          <ui-textfield
            v-model="email"
            required
            helper-text-id="email-field-helper-text"
            input-type="email"
          >
            Email Address
          </ui-textfield>
          <ui-textfield-helper
            v-if="controls.helperText"
            id="email-field-helper-text"
            :visible="controls.isVisible"
          >
            Must be like me@example.com
          </ui-textfield-helper>
        </ui-form-field>
        <ui-form-field>
          <label>Password:</label>
          <ui-textfield
            v-model="password"
            input-type="password"
            required
            pattern=".{8,}"
            helper-text-id="pw-validation-msg"
            :attrs="{ autocomplete: 'current-password' }"
            >Choose password</ui-textfield
          >
          <ui-textfield-helper id="pw-validation-msg" visible validMsg>
            Must be at least 8 characters long
          </ui-textfield-helper>
        </ui-form-field>
        <ui-form-field :class="actionClass">
          <ui-button raised nativeType="submit" type="submit">Submit</ui-button>
          <ui-button outlined>Cancel</ui-button>
        </ui-form-field>
      </template>
    </ui-form>
    <div>
      {{ mesaj }}
    </div>
  </div>
</template>

我也試過用它來代替v-on:submit.prevent="register()@submit.prevent="register()或@submit.prevent.native。此外,如果我在按鈕上放置@click=register(),它會注冊所有的值,即使它們不是有效的

? 最佳回答:

我已經用驗證器https://next-material.balmjs.com/#/data-input/validator解決了這個問題。下面是代碼:

<template>
  <div>
    <h1>Register</h1>
    <ui-form type="|" item-margin-bottom="16" action-align="center">
      <template #default="{ actionClass }">
        <ui-form-field>
          <ui-textfield
            v-model="formData.email"
            required
            helper-text-id="email-field-helper-text"
            input-type="email"
          >
            Email address
          </ui-textfield>
          <ui-textfield-helper
            v-if="controls.helperText"
            id="email-field-helper-text"
            :visible="controls.isVisible"
          >
            Must be like me@example.com
          </ui-textfield-helper>
        </ui-form-field>
        <ui-form-field>
          <label>Password:</label>
          <ui-textfield
            v-model="formData.password"
            input-type="password"
            required
            pattern=".{8,}"
            helper-text-id="pw-validation-msg"
            :attrs="{ autocomplete: 'current-password' }"
            >Choose password</ui-textfield
          >
          <ui-textfield-helper id="pw-validation-msg" visible validMsg>
            Must be at least 8 characters long
          </ui-textfield-helper>
        </ui-form-field>
        <ui-alert v-if="message" state="error">{{ message }}</ui-alert>
        <ui-form-field :class="actionClass">
          <ui-button raised @click="register()">Submit</ui-button>
          <ui-button outlined>Cancel</ui-button>
        </ui-form-field>
      </template>
    </ui-form>
    <div>
      {{ mesaj }}
    </div>
  </div>
</template>

<script>
import utils from "../utils.js";
import { useValidator, helpers } from "balm-ui";

const validations = {
  email: {
    label: "Email",
    validator: "required, email",
    email: {
      validate(value) {
        return /^(([^<>()\]\\.,;:\s@"]+(\.[^<>()\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,24}))$/.test(value);
      },
      message: "Email address should be like me@example.com",
    },
  },
  password: {
    label: "Password",
    validator: "required, password, minRule",
    password: {
      validate(value) {
        return /^\w+$/.test(value);
      },
      message: "%s must be a letter, digit or underline",
    },
    minRule: {
      validate(value) {
        return value.trim().length >= 8;
      },
      message: "%s minLength >= 8",
    },
  },
};

export default {
  name: "Register",
  required: {
    validate(value) {
      return !helpers.isEmpty(value);
    },
    message: "%s is required",
  },
  data() {
    return {
      balmUI: useValidator(),
      validations,
      formData: {
        email: "",
        password: "",
      },
      mesaj: "",
      message: "",
      controls: {
        helperText: true,
        isVisible: true,
      },
    };
  },
  methods: {
    register() {
      let result = this.balmUI.validate(this.formData);
      let { valid, message } = result;
      this.message = message;
      console.log(`Vrei sa te inregistrezi cu email: ${this.formData.email}`);
      console.log(utils.url);

      if (valid) {
        let data = {
          email: this.formData.email,
          password: this.formData.password,
        };

        let requestParameters = utils.globalRequestParameters;
        requestParameters.method = "POST";
        requestParameters.body = JSON.stringify(data);

        fetch(utils.url + "user", requestParameters).then((res) => {
          res.text().then((res) => (this.mesaj = res));
        });
      }
    },
  },
};
</script>

<style></style>
主站蜘蛛池模板: 日本强伦姧人妻一区二区| 亚洲欧洲∨国产一区二区三区| 久久99国产一区二区三区| 亚洲夜夜欢A∨一区二区三区| 久久久国产精品无码一区二区三区| 中文人妻av高清一区二区| 国产伦精品一区二区三区免.费 | 无码夜色一区二区三区| 亚洲日韩精品一区二区三区 | 国产一区二区精品久久91| 色欲AV蜜臀一区二区三区 | 在线免费一区二区| 69久久精品无码一区二区| 水蜜桃av无码一区二区| 美女啪啪一区二区三区| 国产一区麻豆剧传媒果冻精品| 一区二区三区高清在线| 一级特黄性色生活片一区二区| 国产精品亚洲一区二区无码| 国内精品视频一区二区八戒| 精品国产日韩一区三区| 精品国产一区二区三区免费看| 精品国产一区二区三区| 韩国精品一区二区三区无码视频 | 色视频综合无码一区二区三区| 国产无吗一区二区三区在线欢| 日韩精品午夜视频一区二区三区| 国产精品久久久久久一区二区三区| 亚洲一区精彩视频| 在线免费视频一区| aⅴ一区二区三区无卡无码| 超清无码一区二区三区| 亚洲国产一区国产亚洲 | 精品人妻一区二区三区四区在线| 韩国一区二区三区| 国产福利一区二区在线视频| 国产福利一区二区在线视频 | 成人一区二区免费视频| 中文字幕日韩一区二区三区不| 国产精品一区二区久久国产| 88国产精品视频一区二区三区|