jQuery Mobile Responsive Panel和Textarea

agu*_*lin 5 textarea panel ipad jquery-mobile

我有jQuery Mobile应用程序http://gudulin.ru/test/problem.html.

页面加载后左侧面板打开: $('#my-panel').panel("open");

ui-responsive-panel在我的页面和@media css中添加了一个类,所以我可以一起使用面板和页面内容.

在笔记本电脑浏览器上一切正常,但iPad浏览器(Safari或其他任何东西)都存在问题.当左面板打开并且我开始在文本区域中键入文本时,在输入任何符号后页面会跳转.当您开始在textarea的底部键入时(文本在键盘上向下)时会出现问题.

如果您没有明白我的意思,请观看视频:http://www.youtube.com/watch?v = Q6_kM_FshrQ.

如何重现:

  1. 用iPad 打开http://gudulin.ru/test/problem.html
  2. 检查左侧面板是否已打开
  3. 将任何内容写入文本区域并按几次回车键.

谢谢.

agu*_*lin 3

我已经在 jQuery Mobile 论坛http://forum.jquery.com/topic/jquery-mobile-responsive-panel-and-textarea上粘贴了同样的问题,并从ishmaelaz得到了答案,所以我将其留在这里关闭这个问题。

几个月来,我一直在类似的响应式面板布局中解决同样的问题,尽管有文本字段。我上周找到了原因,但没有时间组装该问题的演示。

要解决此问题,请编辑 jquery.mobile 并查找_bindFixListener: (位于 1.3.0 中的第 8149 行)。在此例程中,注释掉throttledresize处理程序。一旦你这样做了,跳跃就会停止。

据我所知,这里的问题是,当您在输入文本字段中键入内容时,iOS 会发送调整大小事件。这导致该处理程序触发,它调用 _positionPanel。_positionPanel 尝试确保面板可见,大概是因为此逻辑针对的是非响应场景,在这种情况下,面板实际上应该始终可见才能有用,但在响应场景中,它只会导致不断跳跃。

可见的键盘似乎是计算出错的关键部分,因为我发现,如果您在页面底部添加一个高 div 使其更长,那么这个逻辑就不会触发,似乎是因为页面底部不在键盘“下方”。不过,到目前为止我还没有测试过,因为一旦我找到了一种让跳跃停止的方法,我就很高兴。