Angular.JS下Input在iOS钟无法聚焦(失去焦点)?

发布于 2022-09-11 21:35:15 字数 5468 浏览 10 评论 0

问题描述

在iOS下,所有的输入框都无法输入,需要长按输入框才能输入。
点击输入框时能够弹出键盘,但是没有光标。在点击的一瞬间是有光标的,但是一松开光标就消失了。只有长按输入框才能成功聚焦,正常输入。
有想过这个问题可能根本不是没有聚焦,因为点击的一瞬间是有光标的。但是随后就消失,猜测可能是什么原因导致焦点丢失,无奈本人水平实在太水,没能找到答案。还望各路大神帮忙看看情况。
图片描述

问题出现的环境背景及自己尝试过哪些方法

Angular.JS的版本是1.6的。。。很多年的老项目了,页面太多不敢轻易替换版本。
安卓和PC上均无此问题。iOS 12.2及以上版本就有这个情况。百度过说可能是因为Input绑定了ng-click。但是我检查了发现并没有这个东西。。。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

<div class="commentDialog {{isShowComment?'commentDialog':'ng-hide'}}">
    <div class="dialogBoard">
        <div class="title">
            发表评论
        </div>
        <div class="rate">
            <div class="fadeButton {{actived0?'actived':''}}" ng-click="rate(0)">
                较差
            </div>
            <div class="fadeButton {{actived1?'actived':''}}" ng-click="rate(1)">
                一般
            </div>
            <div class="fadeButton {{actived2?'actived':''}}" ng-click="rate(2)">
                良好
            </div>
            <div class="fadeButton {{actived3?'actived':''}}" ng-click="rate(3)">
                优秀
            </div>
            <div class="fadeButton {{actived4?'actived':''}}" ng-click="rate(4)">
                完美
            </div>
        </div>
        <div class="commentField">
            <textarea rows="7" id="commentField" ng-model="comment" style="color:#333;width: 98%"
                      placeholder="请输入评论内容(限200字)" maxlength="200" id="doComment"></textarea>
        </div>
        <div class="bottom">
            <div>
                <div flex layout="row">
                    <div layout="row" layout-align="row">
                        <div flex="50" layout="row">
                            <div style="width: 50%;" class="like-btn" flex layout="row" layout-align="center"
                                 ng-click="onCancleComment()">
                                <div style="line-height: 42px;">取消</div>
                            </div>
                        </div>
                        <div flex="50" class="comment-btn" layout="row" layout-align="center"
                             ng-click="submitComment()">
                            <div style="line-height: 42px;">提交</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
这个是完整的输入框部分代码。出现问题的不只是这个页面,也不止是textarea,所有需要输入的地方都出现了这个问题
// 提交评论,先对必填项进行验证
                $scope.submitComment = function () {
                    if ($scope.rated != undefined) {
                        if ($scope.comment != undefined && !$scope.comment.match(/^\s*$/)) {
                            $scope.commentObj = {
                                "dailyReportId": $scope.id,
                                "commentLevel": $scope.rated,
                                "commentContent": $scope.comment
                            };
                            if ($scope.comment.length > 200) {
                                $mdToast.show(
                                    $mdToast.simple()
                                        .textContent("评论内容超出限制")
                                        .position("top right")
                                        .hideDelay(2000)
                                );
                            } else {
                                VisitService.submitComment($scope.commentObj).then(function (response) {
                                    if (response.data.data == "success") {
                                        $mdToast.show(
                                            $mdToast.simple()
                                                .textContent("评论成功")
                                                .position("top right")
                                                .hideDelay(2000)
                                        );
                                    }
                                    $scope.isShowComment = false;
                                    $scope.wannaComment = false;
                                    location.reload();
                                });
                            }
                        } else {
                            $mdToast.show(
                                $mdToast.simple()
                                    .textContent("请输入评论内容")
                                    .position("top right")
                                    .hideDelay(2000)
                            );
                            return;
                        }
                    } else {
                        $mdToast.show(
                            $mdToast.simple()
                                .textContent("请选择评论等级")
                                .position("top right")
                                .hideDelay(2000)
                        );
                        return;
                    }
                };
这是提交按钮,也是整个框框中仅有的一处事件的代码

你期待的结果是什么?实际看到的错误信息又是什么?

控制台未报出任何错误,PC和安卓均无法复现这个情况。要怎么做才能让iOS也能顺利聚焦?这个问题是因为什么原因而造成的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文