我创建了一个网站,类似控制面板,控制连接到微控制器的不同设备(网站本身托管在微控制器上)。
我遇到了这个问题:如果用户更改某些复选框的状态(您可以将其视为开/关按钮),并在发送其他命令之后立即执行,我的系统崩溃了。为了避免这种情况,我需要引入延迟,禁止用户在特定时间内点击网站上的任何其他按钮(在我的情况下为5秒)。我正在使用JavaScript向我的微控制器传送http请求,因此我正在寻找基于JavaScript的解决方案。
希望我明确表示感谢你的帮助。
答案 0 :(得分:1)
首先,您需要将EVENT附加到您拥有的所有复选框。
这样的事情:
$.("input[type='checkbox']").change(disableScreen);
创建一个会禁用屏幕的div
<div id="disablingDiv" ></div>
然后我们必须创建一个名为disableScreen的新函数。
function disableScreen() {
var $disablingDiv= $("#disablingDiv");
$body.addClass("disablingDiv");
window.setTimeout(function () {
$body.removeClass("disablingDiv");
}, 5000);
}
.disablingDiv
{
/* Do not display it on entry */
display: none;
/* Display it on the layer with index 1001.
Make sure this is the highest z-index value
used by layers on that page */
z-index:1001;
/* make it cover the whole screen */
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
/* make it white but fully transparent */
background-color: white;
opacity:.00;
filter: alpha(opacity=00);
}
隐藏div解决方案取自“Disable all page elements with transparent div”
答案 1 :(得分:1)
您可以使用以下步骤。
HTML Div
Visible false
或display:none
screen.Width
和screen.Height
Checkbox
时 - 将div visible=true
或display:block
设为5秒。答案 2 :(得分:1)
由于帖子声明网站本身是在微控制器上托管的,因此jQuery可能不适合(存储限制)答案。然而,总体主题仍然是相同的。当用户更改适当的控件时,会显示带有“请稍候”或其他消息的模态div。
您没有提到要定位的浏览器,所以我假设是chrome或firefox版本。
<强> CSS:强>
.modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0,0,0,0.3);
z-index: 1001;
display: none;
}
.modal.active {
display: block;
}
HTML (将此div放在body的根目录中,只有一次):
<div id="modal" class="modal">
<h3>Please wait...</h3>
</div>
<强> JavaScript的:强>
// get your elements
var element = document.getElementById("myField");
var modal = document.getElementById("modal");
// opens the modal
function openModal() {
modal.classList.add("active");
}
// closes the modal
function closeModal() {
modal.classList.remove("active");
}
// opens the modal, then closes it after a timeout period
function openTemporaryModal(var timeout) {
openModal();
setTimeout(function() {
closeModal();
}, timeout);
}
// used as an event callback
function modalForFiveSeconds() {
openTemporaryModal(5000);
}
// Attach the event callback to the element/event you want to open the modal:
element.addEventListener('change', modalForFiveSeconds);
<强>参考文献:强>