【问题标题】:Clicking submit button of an HTML form by a Javascript code通过 Javascript 代码单击 HTML 表单的提交按钮
【发布时间】:2011-07-09 20:09:41
【问题描述】:

我对 WEB probramming 了解不多,所以请随时询问我是否遗漏了任何细节。

有一个网站我经常访问,每次访问都需要用户登录。对于这个网站的登录页面,我正在尝试写一个用户脚本,它会自动让我登录。

我设法填写了表单字段,但不知道如何通过 JavaScript 单击提交按钮。以下是原始登录代码的精简版。如何在这段代码中自动点击这个提交按钮?

<div id="start">
    <div id="header">
        <div id="login">
            <form id="loginForm" name="loginForm" method="post" action="#">
                // ...
                <input type="submit" id="loginSubmit" onclick="changeAction('submitInput','loginForm');document.forms['loginForm'].submit();" value="Log in" />
                // ...
            </form>
        </div>
    </div>
</div>

【问题讨论】:

    标签: javascript button automation click submit


    【解决方案1】:

    一般来说,提交表单的常用方法是在表单本身上调用 submit(),如 krtek 的回答中所述。

    但是,如果您出于某种原因需要实际单击提交按钮(您的代码取决于提交按钮的名称/值等),您可以像这样单击提交按钮本身:

    document.getElementById('loginSubmit').click();
    

    【讨论】:

    • 你的回答才是真正的答案 :) 我使用按钮名称来检查动作做什么,这解决了问题而无需重新考虑系统,或者从 js 添加隐藏字段
    • 实际上,我在尝试让它在 Chrome (39) 中工作时遇到了真正的问题。无论我以编程方式单击哪个按钮,它似乎总是提交一个(第一个)按钮的名称。在 IE11 中似乎很好 :-( 我确实有 jQuery...我希望这与此无关。
    【解决方案2】:
    document.getElementById('loginSubmit').submit();
    

    或者,使用与onclick 处理程序相同的代码:

    changeAction('submitInput','loginForm');
    document.forms['loginForm'].submit();
    

    (虽然 onclick 处理程序写得有点愚蠢:document.forms['loginForm'] 可以替换为 this。)

    【讨论】:

    • document.getElementById('loginSubmit').submit(); ...错误:submit()不是函数...如果需要点击按钮,mercurial的回答是正确的。
    • 正如@Christian Michael 所说,这个答案似乎完全不正确。也许它在 MSIE 中有效?
    【解决方案3】:

    你可以这样做:

    document.forms["loginForm"].submit()
    

    但这不会调用您按钮的onclick 操作,因此您需要手动调用它。

    请注意,您必须使用表单的name 而不是id 来访问它。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 2019-01-01
      相关资源
      最近更新 更多