web-dev-qa-db-ja.com

Vuetifyフォーム検証をリセット

V-dialogでvuetify検証をリセットできません。

このコードペンは、私が持っているものを簡略化したバージョンです。
https://codepen.io/yuukive/pen/BVqpEZ

上記のコードで、私がした場合

(ダイアログを開く->保存ボタンを押す->(検証に失敗)->閉じるボタンを押す->もう一度ダイアログを開く)、

ダイアログを再度開いたときに、すでに検証されています...

ユーザーが2回目に開く前に検証をリセットすることはできますか?

new Vue({
  el: '#app',
  data: () => ({
    dialog: false,
    emailRules: [v => !!v || 'Name is required']
  }),
  methods: {
    onSave() {
      if (!this.$refs.form.validate()) return
      dialog = false
    }
  }
})
<div id="app">
  <v-app id="inspire">
    <v-layout row justify-center>
      <v-dialog v-model="dialog" persistent max-width="500px">
        <v-btn slot="activator" color="primary" dark>Open Dialog</v-btn>
        <v-card>
          <v-card-title>
            <span class="headline">Email</span>
          </v-card-title>
          <v-form ref="form">
            <v-card-text>
              <v-container grid-list-md>
                <v-layout wrap>
                  <v-flex xs12>
                    <v-text-field label="Email" required :rules="emailRules"></v-text-field>
                  </v-flex>
                </v-layout>
              </v-container>
              <small>*indicates required field</small>
            </v-card-text>
            <v-card-actions>
              <v-spacer></v-spacer>
              <v-btn color="blue darken-1" flat @click.native="dialog = false">Close</v-btn>
              <v-btn color="blue darken-1" flat @click.native="onSave">Save</v-btn>
            </v-card-actions>
          </v-form>
        </v-card>
      </v-dialog>
    </v-layout>
  </v-app>
</div>
11
sora

ドキュメントからの使用:

this.$refs.form.reset()

reset()は検証をクリアしますが、入力もクリアすることに注意してください。
この問題 をフォローして、これに関する最新情報を確認できます。

したがって、おそらくダイアログの値を監視してフォームをリセットできます。

watch: {
    dialog() {
        this.$refs.form.reset()
    }
}
18
Traxo

resetValidation()は検証エラーのみをクリアし、reset()は入力フィールドもクリアします。

4
ego