【问题标题】:Prevent focus or prevent scrolling to focus element防止焦点或防止滚动到焦点元素
【发布时间】:2020-07-30 01:55:33
【问题描述】:

我有一个不错的 [label] 按钮,可以触发文件上传窗口。单独的图像上传表单/脚本本身位于页面底部。丑陋的默认文件上传按钮本身被 CSS 隐藏。

当我单击 [标签] 按钮时,浏览器会一直滚动到页面底部,我的隐藏表单和脚本内容所在的位置。如何防止这种聚焦或滚动?

这是我的代码的设置方式。一个不错的上传按钮和界面,用于在页面顶部附近(在“主”表单内)上传图像。页面底部实际图片上传表单(单独表单):

<form name="main-form">
  <div class="imagelist" id="imagelist">
    <div class="uploadcontainer"><br><br>
      <label for="imagefile" id="uploadbutton" class="btn btn-primary btn-lg">Upload Images</label>
    </div>
  </div>
  ... (other input fields, etc for main form, etc.)
</form>

.
.
.
.
all the way to the bottom of the page:
.
.

<form name="uploadform" id="uploadform" method="post" action="/edit-images/uploadimage.php" enctype="multipart/form-data">
  <input type="hidden" name="itemimagesid" value="<?php echo $itemid; ?>" />
  <input type="hidden" name="itemtype" value="new" />
  <input type="file" name="imagefile" id="imagefile" onchange="uploadFile()">
</form>

【问题讨论】:

  • 您没有任何触发文件输入和上传的javascript吗?
  • 点击“标签”按钮应该触发点击文件输入按钮。我想这是默认的。我也在使用 Bootstrap 3.2.0,但不确定这是否会有所不同。

标签: javascript jquery


【解决方案1】:

嗯 - 你能滚动回标签吗?

$(document).ready(function() {
  $('#uploadbutton').click(function(event) {
    $('html, body').animate({
        scrollTop: $(this).offset().top
    }, 0.1);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="main-form">
  <div class="imagelist" id="imagelist">
    <div class="uploadcontainer"><br><br>
      <label for="imagefile" id="uploadbutton" class="btn btn-primary btn-lg">Upload Images</label>
    </div>
  </div>
  ... (other input fields, etc for main form, etc.)
</form>

<br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br />

<form name="uploadform" id="uploadform" method="post" action="/edit-images/uploadimage.php" enctype="multipart/form-data">
  <input type="hidden" name="itemimagesid" value="<?php echo $itemid; ?>" />
  <input type="hidden" name="itemtype" value="new" />
  <input type="file" name="imagefile" id="imagefile" onchange="uploadFile()">
</form>

【讨论】:

  • 感谢您的回复。不幸的是,我不能使用这个解决方案,因为我需要它在 IE8 和 IE9 中工作。我的脚本实际上在几乎所有浏览器上都运行良好,除了最新的 Firefox 版本。唯一的问题是单击文件输入按钮时聚焦/向下滚动到底部表单。
  • 有没有办法通过 jQuery 来检测浏览器是否支持 .click() 功能?
  • 也许accepted answer on this question 会帮助你...
  • 我尝试了回滚解决方案,它适用于第一张图片,但不适用于第二张图片上传。当“imagelist”容器带有 AJAX 时,该按钮也会在 AJAX 中加载。在 10 张图片之后,该按钮会被故意禁用(最多 10 张图片)。
  • 我想出了如何让函数一直工作的方法: $(document).on("click", "#uploadbutton", function(e) {...});现在唯一的问题是 IE8/IE9 向下滚动到隐藏表单,但只有在上传图像或取消文件上传对话框后才会立即向上滚动。我想我可以忍受这个,但修复它会很好。
猜你喜欢
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 2023-04-03
  • 2020-07-02
  • 2020-02-20
  • 2011-08-30
  • 2011-11-04
  • 1970-01-01
相关资源
最近更新 更多