【问题标题】:Vuetify stepper alert message when blanks not filled未填充空白时 Vuetify 步进器警报消息
【发布时间】:2018-05-13 11:10:06
【问题描述】:

我在制作这个Vuetify stepper 代码时得到了一些帮助,但我还有最后一个问题。我了解到有rules可以设置,所以那些blanks一定要填写。例如在我的代码中,当你没有在step 3 中填写blanks 并想继续时,它不会让你。但是,当您没有在step 2 中填写blanks 时,它只会让您完成。

有没有办法让用户知道在哪个step 下没有遇到requirements,例如显示警报消息,应该是这样的:rules="[() => false]",当用户填写blanks 到将图标切换回正常状态?

代码如下:

Codepen

        <html>
<head>
    <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet">
    <link href="https://unpkg.com/vuetify/dist/vuetify.min.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>
<body>
    <div id="app">
        <v-app>
            <v-content>
                <v-container>
                    <v-stepper v-model="step" non-linear vertical>
                        <v-stepper-step :complete="step > 1" step="1" editable>
                            Person
                        </v-stepper-step>
                        <v-stepper-content step="1">
                            <v-text-field label="Name" v-model="registration.name" required></v-text-field>
                            <v-text-field label="Email" v-model="registration.email" required></v-text-field>
                            <v-btn color="primary" @click.native="step = 2">Continue</v-btn>
                        </v-stepper-content>
                        <v-stepper-step :complete="step > 2" step="2" editable>
                            Person
                        </v-stepper-step>
                        <v-stepper-content step="2">
                            <v-text-field label="Street" v-model="registration.street" required></v-text-field>
                            <v-text-field label="City" v-model="registration.city" required></v-text-field>
                            <v-text-field label="State" v-model="registration.state" :rules="
                            [v => !!v || 'Item is required']" required></v-text-field>
                            <v-btn flat @click.native="step = 1">Previous</v-btn>
                            <v-btn color="primary" @click.native="step = 3">Continue</v-btn>
                        </v-stepper-content>
                        <v-stepper-step step="3" editable>Misc Info</v-stepper-step>
                        <v-stepper-content step="3">
                            <v-form ref="form" v-model="valid" lazy-validation>
                                <v-text-field label="Number of Tickets" type="number"
                                              v-model="registration.numtickets"
                                              :rules="[v => !!v || 'Item is required']"></v-text-field>
                                <v-select label="Shirt Size" v-model="registration.shirtsize"
                                          :items="sizes"
                                          :rules="[v => !!v || 'Item is required']"></v-select>
                                <v-btn flat @click.native="step = 2" >Previous</v-btn>
                                <v-btn color="primary" @click="submit">Save</v-btn>
                            </v-form>
                        </v-stepper-content>
                    </v-stepper>
                </v-container>
            </v-content>
        </v-app>
        <br/>
        <br/>Debug: {{registration}}



    </div>

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.js"></script>
<script>
    new Vue({
        el: '#app',
        data: () => ({
            step:1,
            registration:{
                name:null,
                email:null,
                street:null,
                city:null,
                state:null,
                numtickets:0,
                shirtsize:'XL'
            },
            sizes:['S','M','L','XL']
        }),
        methods:{
            submit() {
                alert('This is the post. Blah');
            }
        }
    })
</script>
</body>
</html>

官方Vuetifystepper tutorial pageVuetify stepper

我似乎只是不明白if 语句在vuetify 中是如何工作的。以及如何更改icons等。

【问题讨论】:

    标签: javascript html vue.js vuetify.js


    【解决方案1】:

    对于更复杂的验证,我更喜欢使用像Vee Validate这样的库

    添加到您的脚本中

    Vue.use(VeeValidate);

    基本上,每一步都会变成:

    <v-stepper-step :complete="step > 1" 
                    step="1" editable 
                    :rules="[() => !errors.has('name') && !errors.has('email')]">
        Person
    </v-stepper-step>
    <v-stepper-content step="1">
        <v-text-field name="name" 
                      label="Name" 
                      v-model="registration.name" 
                      v-validate="'required'" 
                      :error-messages="errors.collect('name')">
        </v-text-field>
        <v-text-field name="email" 
                      label="Email" 
                      v-model="registration.email" 
                      v-validate="'required|email'" 
                      :error-messages="errors.collect('email')">
        </v-text-field>
        <v-btn color="primary" @click.native="step = 2">Continue</v-btn>
    </v-stepper-content>
    

    注意v-validateerrors.has 的使用方式。 你可以在https://codepen.io/ittus/pen/ZoRyKv查看演示

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 2018-11-13
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多