【问题标题】:How do I submit a form with no form ID and no submit ID, but known hidden value?如何提交没有表单 ID 和提交 ID 但已知隐藏值的表单?
【发布时间】:2012-01-12 21:38:03
【问题描述】:

我正在苦苦挣扎的情况是页面上有更多看起来像这样的表单(每个表单的 hiddenId 不同):

<form method="post">
<input type="hidden" name="hiddenId" value="111222">
<input type="submit" value="Proceed">
</form>

<form method="post">
<input type="hidden" name="hiddenId" value="111333">
<input type="submit" value="Proceed">
</form>

如何使用 javascript(我不介意使用 jQuery)提交包含所需值的 hiddenId 的特定表单?感谢您的帮助!

【问题讨论】:

  • 为什么不能给表单一个类或id?
  • name 已弃用,您应该使用 id。永远不要对多个元素使用相同的 id。

标签: javascript jquery forms


【解决方案1】:

这些方面的东西应该让你开始:

var inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
    if(inputs[i].type === "hidden" && inputs[i].value === "111333") {
        inputs[i].form.submit();
    } 
}

如果你可以使用 jQuery:

$("input[type='hidden'][value='something']").closest("form").submit();

【讨论】:

  • @Neil - 是的,那可能会好一点:) 已编辑。
  • 非常感谢,两种解决方案都能完美运行! 像我这样的傻瓜注意:代码必须在页面末尾。
  • @SiddSidd - 代码不必在页面末尾,它只需要在 DOM 完全加载时运行(否则会有 input 元素循环) .将代码放在页面末尾意味着代码在其他所有内容(包括您的 input 元素)后运行。
【解决方案2】:

document.forms 是一个数组。 document.forms[0] 是第一个。

元素的工作方式相同:

document.forms[0].elements[0].value

您可以循环直到获得值然后提交当前表单:

document.forms[x].submit()

【讨论】:

    【解决方案3】:

    使用var allForms = document.forms;访问所有表单

    根据需要循环访问输入

    【讨论】:

      【解决方案4】:

      您可以使用 document.querySelector 或在旧版浏览器上模拟它的各种 JavaScript 库之一来查找隐藏的输入元素,然后使用其 form 属性访问表单并调用 submit 方法。

      【讨论】:

        【解决方案5】:

        您可以在表单中添加一个 id 并提交按钮:

        <form method="post" id="form1">
        <input type="hidden" name="hiddenId" value="111222">
        <input type="submit" value="Proceed" id="submit1">
        </form>
        
        <form method="post" id="form2">
        <input type="hidden" name="hiddenId" value="111333">
        <input type="submit" value="Proceed" id="submit2">
        </form>
        

        然后使用jQuery提交表单:

        $("#submit1").click(function() {
            form1.submit();
        }
        $("#submit2").click(function() {
            form2.submit();
        }
        

        【讨论】:

        • 如果原发帖人正在使用(或想使用)jQuery,是的。
        • 原始发帖人说“我如何使用 javascript 提交”这就是我采用这种方法的原因。
        • 这对我没有帮助,因为我无法更改 html;我正在为 Google Chrome 编写扩展程序。
        • 对不起,我不知道这一点。我将发布一个替代解决方案。
        • 当点击提交按钮时,为什么还要绑定一个点击处理程序来提交它:\
        猜你喜欢
        • 1970-01-01
        • 2018-07-14
        • 2015-01-10
        • 2023-03-13
        • 1970-01-01
        • 2015-05-03
        • 2017-05-22
        • 2019-02-15
        • 2013-01-21
        相关资源
        最近更新 更多