自动点击功能,持续点击提交按钮

时间:2017-08-20 09:55:09

标签: javascript php html

我已在表单上添加了自动点击功能。我想只自动点击一次提交按钮。但我的代码不断点击提交按钮。由于我的页面不断自动重新加载。

我只想点击按钮一次。我怎么能这样做?

<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>

3 个答案:

答案 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);
}