【发布时间】:2022-01-02 12:31:30
【问题描述】:
我正在使用 Flask 构建我的第一个 Web 应用程序。我是 html/ JavaScript/ CSS 新手 - 请多多包涵。
应用程序执行以下操作:用户上传 Excel 文件如下:
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
然后他们使用下拉列表选择某些参数。当用户点击“提交”时,使用 pandas 操作数据,并在 Excel 中导出一个新文件。
我设法使用 html 和 CSS 向“提交”按钮添加了一个微调器。我在我的 JavaScript 中添加了一个事件侦听器,以便在单击按钮时激活微调器。目前,微调器无限期地运行,但是我希望微调器停止并且按钮文本在操作完成后恢复为“提交”,即导出完成。有谁知道我如何做到这一点?
这是我的html:
<button type="submit" id="submit" class="button">
<span class="button__text">Submit</span>
</button>
这是我的 CSS:
<style>
.button {
position: relative;
padding: 8px 16px;
background: #009579;
border: none;
outline: none;
border-radius: 2px;
cursor: pointer;
}
.button:active {
background: #007a63;
}
.button__text {
font: bold 20px "Quicksand", san-serif;
color: #ffffff;
transition: all 0.2s;
}
.button--loading .button__text {
visibility: hidden;
opacity: 0;
}
.button--loading::after {
content: "";
position: absolute;
width: 16px;
height: 16px;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
border: 4px solid transparent;
border-top-color: #ffffff;
border-radius: 50%;
animation: button-loading-spinner 1s ease infinite;
}
/*animate spinner - spin from 0 to 1 turn*/
@keyframes button-loading-spinner {
from {
transform: rotate(0turn);
}
to {
transform: rotate(1turn);
}
</style>
这是我的 JavaScript:
<script type="text/javascript">
(() => {
const elem = document.getElementById('submit');
elem.disabled = false;
elem.addEventListener('click', e=> {
elem.classList.add('button--loading');
});
})();
</script>
【问题讨论】:
-
这完全取决于您如何处理上传操作。通常,您会使用 Fetch 或 XMLHttpRequest 手动向服务器发出请求,并在请求完成时删除 CSS 类。你能告诉我们更多关于这方面的信息吗?
-
谢谢。老实说,我认为“上传文件”有点用词不当。用户提交文件,但它没有保存在服务器上。不确定这是否有所作为。这是脚本:
-
请在您的问题中添加任何附加代码,因为 cmets 中的代码很难阅读。您还可以为我们创建可运行的 sn-ps,让我们体验您的体验。在编辑您的问题时查找
<>图标。 -
谢谢。现在完成了:)
-
恐怕这仍然不能告诉我们任何事情。查看您的代码,我希望当您单击
submit按钮时,加载程序将开始旋转并且页面将重新加载。重新加载是提交数据的<form>元素的默认行为。我说的对吗?
标签: javascript html css flask addeventlistener