我已在表单上添加了自动点击功能。我想只自动点击一次提交按钮。但我的代码不断点击提交按钮。由于我的页面不断自动重新加载。
我只想点击按钮一次。我怎么能这样做?
<form action="" method="POST">
<input type="text" size="80" name="url" value="https://drive.google.com/file/d/<?php echo $_GET['id']; ?>/view"/>
<input type="submit" id="btn" value="PLAY" name="submit" />
</form>
<script>
window.onload = function(){
document.getElementById('btn').click();
}
</script>
答案 0 :(得分:1)
您可以使用localstorage确定您是否已提交表单,并根据此值提交表单
window.onload = function(){
if (localStorage.formSubmitted !== 'true') {
localStorage.setItem("formSubmitted", "true");
document.getElementById('btn').click();
}
}
答案 1 :(得分:0)
首次单击按钮时,您还可以将其存储在localstorage中。在执行click事件之前,请检查是否已设置该存储。像这样:
window.onload = function() {
if (!localStorage.getItem('buttonClicked')) {
localStorage.setItem('buttonClicked', 'true');
document.getElementById('btn').click();
}
}
答案 2 :(得分:0)
给出的两个答案是好的,但是用户可以操纵和混淆这些存储的会话项,因此允许操纵验证。
为避免用户弄乱您的验证,您可以检查表单是否已在PHP中发布。在处理敏感用户信息时,这一点尤为重要。
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
DbContext db = ...;
var pendingMigrations = db.Database.GetPendingMigrations().ToList();
if (pendingMigrations.Any())
{
var migrator = db.Database.GetService<IMigrator>();
foreach (var targetMigration in pendingMigrations)
migrator.Migrate(targetMigration);
}