我有一个由"计算"触发的功能。按钮
我需要此行仅在每个会话中运行一次(会话可能是1天或直到浏览器重新加载)。
$('.popup-with-form').magnificPopup('open');
这会打开一个Magnific Popup。执行此功能后(弹出窗口打开),如果"计算"按钮再次按下,我不希望弹出窗口再次打开。
JS / JQuery代码:
function StateChanged() {
if (XmlHttp.readyState == 4 || XmlHttp.readyState == "complete") {
$('.popup-with-form').magnificPopup('open');
document.getElementById("CalcSum").innerHTML = XmlHttp.responseText;
document.getElementById("CalcSumPopup").innerHTML = XmlHttp.responseText;
}
}
PS 我知道很多这些问题都出现了,我尝试了不同的做事方式,但是因为我是"代码挑战"并且不知道JQuery或JS我无法弄明白。我知道有一个 .one " thing"在JQuery中,但不了解如何使它工作。
我真的很感激任何帮助。谢谢!
更新 @MarcoBonelli回答的问题 - 谢谢!
工作解决方案:
if (!sessionStorage.alreadyClicked) {
$('.popup-with-form').magnificPopup('open');
sessionStorage.alreadyClicked = "true";
}
答案 0 :(得分:13)
如果您只想在每个浏览器会话中执行此行一次,则可以使用sessionStorage
。当您在sessionStorage
上设置变量时,它会保持其值,直到浏览器关闭为止(例如,直到您关闭Google Chrome)。
所以你可以这样做:
if (!sessionStorage.alreadyClicked) {
$('.popup-with-form').magnificPopup('open');
sessionStorage.alreadyClicked = 1;
}
请注意sessionStorage
,因为它只能存储string
个值。
如果您希望每个页面会话只执行一次(这意味着每次页面刷新一次),那么您可以使用任何变量并将其设置为true以记住您已执行该行:
if (!window.alreadyClicked) {
$('.popup-with-form').magnificPopup('open');
alreadyClicked = true;
}
答案 1 :(得分:1)
尝试
编辑,v2
我读过.one但是无法弄明白:( ......我确实需要 它仅在按下CALCULATE按钮时运行一次。 - 屋顶 计算器
HTML
<!-- removed `action="javascript:GetInfo();"
, accept-charset="UNKNOWN"
, enctype="application/x-www-form-urlencoded"
, method="post"`
from `form` attributes -->
<form id="formcalc" style="text-align: left;">
<!-- changed `input` `type` to `button` -->
<input name="calculate" type="button" value="Calculate" />
</form>
JS
$("#formcalc > input[name='calculate']")
.one("click", function(e) {
e.stopPropagation();
GetInfo();
});
V1
$("a.popup-with-form").one("click", function(e) {
// do stuff, once
// i.e.g.,
// `XmlHttp.onreadystatechange = StateChanged;` at `ShowSum()`
$(e.target).remove(); // remove element when `click`ed once
});
答案 2 :(得分:0)
请在下方使用。
disableOn
空
如果窗口宽度小于此选项中的数字 - 将不会打开灯箱,并且将触发元素的默认行为。设置为0以禁用行为。选项仅在从DOM元素初始化Magnific Popup时有效。
也可以接受Function作为参数,如果可以打开灯箱则返回true,否则返回false。例如:
disableOn:function(){if($(condition){return false;} return true;}