失去对文本项目输入的关注后,离线项目选择在Android上闪烁

时间:2016-05-17 11:03:36

标签: android angularjs cordova validation ionic-framework

ionic serve中运行正常。

在设备上运行时,在页面加载后以及键入或刚刚选择文本框之后。然后,当您选择"选择(下拉菜单)"时,下拉选项会闪烁,然后它不接受任何输入(只是在没有选择的情况下关闭),但是如果再次尝试则可以。

据我所知,这是由ng-untouched替换为ng-touched

<ion-list>
    <ion-item class="item-divider">
        <b class="">New member's details</b>
    </ion-item>
    <ion-item class="item-input">
        <label class="input-label" for="firstName">First name</label>
        <input type="text" ng-model="memberDetails.firstName" name="firstName" id="firstName" ng-class="{'input-validation-error' : applicationForm.firstName.$error.required && (applicationForm.firstName.$touched || showRequired)}" required />
    </ion-item>
    <ion-item class="item-input">
        <label class="input-label" for="surname">Surname</label>
        <input type="text" ng-model="memberDetails.surname" name="surname" id="surname" ng-class="{'input-validation-error' : applicationForm.surname.$error.required && (applicationForm.surname.$touched || showRequired)}" required />
    </ion-item>
    <ion-item class="item-input">
        <label class="input-label" for="initials">Initials</label>
        <input type="text" ng-model="memberDetails.initials" name="initials" id="initials" ng-class="{'input-validation-error' : applicationForm.initials.$error.required && (applicationForm.initials.$touched || showRequired)}" required />
    </ion-item>
    <ion-item class="item-input item-select">
        <label class="input-label" for="title">Title</label>
        <select ng-model="memberDetails.titleId" ng-options="lookup.id as lookup.description for lookup in titleLookup" name="title" id="title" ng-class="{'input-validation-error' : applicationForm.title.$error.required && (applicationForm.title.$touched || showRequired)}" required></select>
    </ion-item>
</ion-list>

是否有任何解决方法或解决此问题?

修改

问题似乎与android上的angularjs有关,问题似乎出现在一个来自android chrome浏览器的angularjs网站上。

1 个答案:

答案 0 :(得分:1)

我找到了一个基于this stackoverflow post

的解决方法

只需将此指令添加到您的应用中:

.directive('input', function () {
    return {
        restrict: 'E',
        require: '?ngModel',
        link: function (scope, element, attr, modelCtrl) {
            if (attr.type === "text" && attr.name && modelCtrl) {
                element.on('focus', function () {
                    modelCtrl.$setTouched();
                    scope.$apply();
                });
            }
        }
    };
});

注意:仅在某些设备上的所有设备上都不会出现此问题,(尚未找到问题的根源)