【问题标题】:auto fill form and submit自动填写表格并提交
【发布时间】:2011-02-08 21:27:15
【问题描述】:

我的 404 页面上有一个表单,该表单会自动填写用户尝试查找的地址。我也有 javascript,然后自动提交该表单。

问题是,一旦它自动提交它就会一直循环并且页面不断重新加载。

我正在尝试编写 javascript 代码以触发一次然后停止。 该脚本在页面加载时触发,这就是导致循环的原因。

结果:我需要它在页面加载时触发,页面重新加载,代码检查它是否已经重新加载过一次然后停止。

对于我的测试,我试图让它弹出一个警报,上面写着“我重新加载了一次”,这样我就知道它有效了。

这是我目前的代码

<script type="text/javascript">
window.onload = function() { 
var grabedurl = window.location.href
document.getElementById('badurl').value=grabedurl;
if( history.previous != history.current ){alert('I reloaded once')}
else
setTimeout("document.getElementById('errorsubmit').click()", 3000);}
</script>

【问题讨论】:

    标签: javascript forms submit


    【解决方案1】:

    您可以将已经重新加载或未重新加载的页面状态添加到 URL 的查询字符串部分。这应该在您的formaction 中完成,例如action="?submitted"

    window.onload = function()
    { 
        var form = document.getElementById("aspnetForm");
        form.setAttribute("action", form.getAttribute("action") + "&submitted");
        var grabedurl = window.location.href;
        document.getElementById('badurl').value = grabedurl;
        if (/submitted/.test(window.location.search.substring(1)))
        {
            alert('I reloaded once');
        }
        else
        {
            setTimeout("document.getElementById('errorsubmit').click()", 3000);
        }
    }
    

    但是,您可能需要考虑其他方法——例如通过 XMLHttpRequest 提交表单;有另一个单独的 action 页面来提交表单,或者让服务器记录请求。

    【讨论】:

    • 我们正在使用一个名为 Ektron 的内容管理解决方案。这意味着我无法更改表单操作或 XML Http 请求。 :(
    • 您可以动态更改表单的action,但它不会很漂亮(但是,由于表单不再自动提交,它仍然会优雅地降级)。你有idclass 的表格吗?
    • Pagenotfound.aspx 是否有相同的形式?
    • 洞页在此表单内无法使用。这个表单中可能有 3 个提交按钮。 Ektrons 以某种方式跟踪单击了哪个按钮,并且只触发按钮提交操作。 - 因此评论,我不能改变表单标签。其他提交按钮必须能够触发那里的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2012-06-19
    • 2015-05-13
    • 2020-05-12
    • 2014-06-12
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多