我们有一个使用Quasar Framework,Vue和Cordova构建的跨平台移动应用程序。
在登录页面上,当用户尝试在版本12+的iOS设备上登录应用程序时,当用户使用键盘的“ enter”键提交其凭据时,应用程序崩溃。
这是登录表单的简单视图: Login Form
仅当他们使用iOS键盘时才会发生崩溃。当用户使用登录页面上的“登录”按钮时,该应用程序不会崩溃,并将用户推送到主屏幕。
我们已经在iOS 11.4版的设备上对此进行了测试,并且没有发生崩溃。
这是我的登录页面和脚本的示例。
import { required, email } from 'vuelidate/lib/validators';
import { filter } from 'quasar';
export default {
name: 'PageLogin',
data: function() {
return {
form: {
username: '',
password: ''
},
loggingIn: false
};
},
validations: {
form: {
username: { required, email },
password: { required }
}
},
methods: {
onSubmit() {
this.$v.form.$touch();
// Only submit if there are no errors
if (!this.$v.form.$error) {
this.loggingIn = true;
this.$store
.dispatch('account/verifyUsername', this.form)
.then(result => {
//account/verifyUsername
return this.$store.dispatch('account/login', this.form.password);
})
.then(result => { //account/login
this.$router.push({ name: 'home' });
})
.catch(error => {})
.finally(() => {
this.loggingIn = false;
});
}
}
}
};
<template>
<q-page>
<form class="ad-form" @submit.prevent="onSubmit">
<q-field :error="$v.form.username.$error" error-label="Please enter a valid email address">
<q-input type="email" v-model="form.username" float-label="Email" :error="$v.form.username.$error" @blur="$v.form.username.$touch">
<q-autocomplete @search="onSearch" @selected="onItemSelected" :min-characters="0" value-field="email"/>
</q-input>
</q-field>
<q-field :error="$v.form.password.$error" error-label="Please enter a password">
<q-input type="password" v-model="form.password" float-label="Password" :error="$v.form.password.$error" @blur="$v.form.password.$touch"/>
</q-field>
<q-btn class="standalone" type="submit" color="primary" :loading="loggingIn" :disabled="$v.form.$invalid">Login
<span slot="loading">
<q-spinner class="on-left"/>Logging In
</span>
</q-btn>
<q-btn class="standalone" type="button" flat color="secondary" :to="{ name: 'forgotPassword' }">Forgot your password?</q-btn>
</form>
</q-page>
</template>