vue material md-输入焦点行为
vue material md-input focus behaviour
这很奇怪,所以我希望这是有道理的。
我有一个登录表单,我正在尝试调整 vue material 组件,它目前看起来像这样
<template>
<md-layout>
<md-layout md-flex="100" md-align="center">
<form class="login-form" role="form" @submit.prevent="submit">
<md-input-container>
<div v-bind:class="{ 'has-error': errors.email }">
<label>enter email address</label>
<md-input v-model="email" required></md-input>
<span class="help-block" v-if="errors.email">{{ errors.email[0] }}</span>
</div>
</md-input-container>
<md-input-container>
<div v-bind:class="{ 'has-error': errors.password }">
<label>enter password</label>
<md-input type="password" v-model="password" required></md-input>
<span class="help-block" v-if="errors.password">{{ errors.password[0] }}</span>
</div>
</md-input-container>
<md-button class="md-raised md-primary">Login</md-button>
</form>
</md-layout>
</md-layout>
</template>
提交代码简述
methods: {
submit() {
console.log('login...');
}
}
奇怪的是,当我点击输入标签时,除非我点击最左边的字段,否则它不会获得焦点,我无法输入。因此,如果您将占位符文本想象成上面的 "enter email address",除非我在 "enter...." 中的 "e" 上单击右键,否则它不起作用! (或者如果我进入它,它会按预期获得焦点)
基于该代码的任何想法?
登录表单样式没有做任何疯狂的事:
.login-form {
background: #FFFFFF;
min-width: 40vh;
padding: 65px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
此外,如果有人可以建议如何自动聚焦第一个电子邮件字段,那就太好了 - vue material 文档没有说太多(据我所知)
因为你没有提供“(不)工作”的例子,所以我应该 especulate
一点点。我使用 Vue-material,我没有任何输入问题,但是我们使用 md-input-container
元素来包装我们的输入,里面没有 div
,比如:
<md-input-container>
<label>Initial value</label>
<md-input v-model="initialValue"></md-input>
</md-input-container>
另一个想看的是min-width: 40vh;
。如果你把它改成固定宽度(即100px),还是会出现同样的效果?或者跨度可能与您的输入重叠...您是否尝试过使用 Inspector
进行调试?
为了专注于电子邮件输入,您可以通过添加 ref
选项来实现它,例如:
<md-input v-model="email" required ref='emailInput' ></md-input>
并且在mounted()
函数中你可以设置:
this.$refs.emailInput.focus()
希望对你有所帮助!
这很奇怪,所以我希望这是有道理的。
我有一个登录表单,我正在尝试调整 vue material 组件,它目前看起来像这样
<template>
<md-layout>
<md-layout md-flex="100" md-align="center">
<form class="login-form" role="form" @submit.prevent="submit">
<md-input-container>
<div v-bind:class="{ 'has-error': errors.email }">
<label>enter email address</label>
<md-input v-model="email" required></md-input>
<span class="help-block" v-if="errors.email">{{ errors.email[0] }}</span>
</div>
</md-input-container>
<md-input-container>
<div v-bind:class="{ 'has-error': errors.password }">
<label>enter password</label>
<md-input type="password" v-model="password" required></md-input>
<span class="help-block" v-if="errors.password">{{ errors.password[0] }}</span>
</div>
</md-input-container>
<md-button class="md-raised md-primary">Login</md-button>
</form>
</md-layout>
</md-layout>
</template>
提交代码简述
methods: {
submit() {
console.log('login...');
}
}
奇怪的是,当我点击输入标签时,除非我点击最左边的字段,否则它不会获得焦点,我无法输入。因此,如果您将占位符文本想象成上面的 "enter email address",除非我在 "enter...." 中的 "e" 上单击右键,否则它不起作用! (或者如果我进入它,它会按预期获得焦点)
基于该代码的任何想法?
登录表单样式没有做任何疯狂的事:
.login-form {
background: #FFFFFF;
min-width: 40vh;
padding: 65px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
此外,如果有人可以建议如何自动聚焦第一个电子邮件字段,那就太好了 - vue material 文档没有说太多(据我所知)
因为你没有提供“(不)工作”的例子,所以我应该 especulate
一点点。我使用 Vue-material,我没有任何输入问题,但是我们使用 md-input-container
元素来包装我们的输入,里面没有 div
,比如:
<md-input-container>
<label>Initial value</label>
<md-input v-model="initialValue"></md-input>
</md-input-container>
另一个想看的是min-width: 40vh;
。如果你把它改成固定宽度(即100px),还是会出现同样的效果?或者跨度可能与您的输入重叠...您是否尝试过使用 Inspector
进行调试?
为了专注于电子邮件输入,您可以通过添加 ref
选项来实现它,例如:
<md-input v-model="email" required ref='emailInput' ></md-input>
并且在mounted()
函数中你可以设置:
this.$refs.emailInput.focus()
希望对你有所帮助!