2012-01-12 29 views
7

我与挣扎的情况是,有一些看起来像这样在页面上更多形式(该hiddenId不同的是在每个表格):如何提交没有表单ID且没有提交ID但已知隐藏值的表单?

<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希望值的特定表单?感谢您的帮助!

+1

为什么你不能给表单一个类或ID? – binnyb 2012-01-12 21:40:23

+0

名称已被弃用,您应该使用ID。从不使用相同的ID为多个元素。 – 2012-01-12 21:44:49

回答

7

东西沿着这些路线应该让你开始:

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(); 
+0

...或者你可以使用它的'form'属性... – Neil 2012-01-12 21:45:04

+0

@尼尔 - 是的,那可能会更好一点:)编辑。 – 2012-01-12 21:46:32

+0

非常感谢,两种解决方案都能完美运作! *注意像我这样的傻瓜:代码必须在页面的末尾* – 2012-01-12 22:19:40

2

访问需要所有的使用var allForms = document.forms;

循环通过他们的形式访问输入

0

您可以添加一个id到窗体和su bmit按钮:

<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(); 
} 
+1

*如果*原始海报正在使用(或想使用)jQuery,是的。 – 2012-01-12 21:44:11

+0

OP不使用jQuery。 – 2012-01-12 21:45:28

+0

原来的海报声明“我如何使用javascript提交”这就是为什么我采用这种方法。 – 2012-01-12 21:47:17

6

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

元素相同的方式工作:

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

可以遍历,直到你有值,则提交当前形式:

document.forms[x].submit() 
1

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