这个微小的 JavaScript 和一些 CSS 应该可以通过在点击提交后卡住屏幕来防止重复输入数据库。
到目前为止,在使用该应用提交条目的 200 多人中,有 6 人成功提交了重复的条目。
我们怀疑较旧的浏览器可能对重复条目负责。
我们仍在调查中。
这个假设是否正确?
如果是,有没有办法改进此代码以在所有浏览器上工作?
我想保留这个代码,而不是去寻找另一个,因为它的外观和感觉令人愉快,但对更好的东西持开放态度。
<script type="text/JavaScript">
function FreezeScreen(msg) {
scroll(0, 0);
var outerPane = document.getElementById('FreezePane');
var innerPane = document.getElementById('InnerFreezePane');
if (outerPane) outerPane.className = 'FreezePaneOn';
if (innerPane) innerPane.innerHTML = msg;
}
</script>
--CSS
<style type="text/css">
.FreezePaneOff
{
visibility: hidden;
display: none;
position: absolute;
top: -100px;
left: -100px;
}
.FreezePaneOn
{
position: absolute;
top: 0px;
left: 0px;
visibility: visible;
display: block;
width: 100%;
height: 100%;
background-color: #666;
z-index: 999;
filter:alpha(opacity=85);
-moz-opacity:0.85;
padding-top: 20%;
}
.InnerFreezePane
{
text-align: center;
width: 66%;
background-color: #171;
color: White;
font-size: large;
border: dashed 2px #111;
padding: 9px;
}
</style>
******更新******
我在这里发布我的回复,因为那东西不允许我添加带有愚蠢消息的评论,即每 5 秒只允许 1 条评论,并且自上次添加评论以来已经 10 分钟了。
非常感谢@PPvG 和@Random。我是否需要你们中的一个人的脚本(更可能是@Random,因为我不明白@PPvG 的意思是//...做你提交的东西...)但是我是否需要使用你们中的一个人的 js除了我目前使用的那个?另外,asp.net 是否允许表单 action="~"...?
最佳答案
这些都不会真正阻止页面提交。如果页面已经提交,为什么不拦截页面的on_submit Action 并在那里取消呢?
<form action="~" onSubmit="return CheckSubmitted();">
.......
</form>
<script type="text/javascript">
var submitted = false;
function CheckSubmitted()
{
if (submitted == true) { return false; }
else { submitted = true; return true; }
}
</script>
关于javascript - 为什么这段 JavaScript 代码没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755571/