我有一个带有两个按钮的表单,每个按钮都有onclick = this.form.submit()。我在表单中有一个隐藏字段,我希望字段的值根据单击的按钮而有所不同。最好的方法是什么?
此外,在有人说出答案之前,jQuery在这种情况下不是一个选项。
答案 0 :(得分:12)
使用原型: - )
但严肃地说:
id
添加到隐藏字段在每个处理程序中提交表单之前:
document.getElementById("hiddenId").value = "mySpecialValue";
//or (depending on which onclick handler you are in)
document.getElementById("hiddenId").value = "myOtherSpecialValue";
以与现在相同的方式提交表格。
推荐前:
<input id="buttonA" type="button" value="do something" onclick="buttonA_clickHandler(event);"/>
...
function buttonA_clickHandler(event) {
document.getElementById('hiddenId').value = whatever;
document.getElementById('theForm').submit();
}
重复另一个按钮。
答案 1 :(得分:6)
假设您的隐藏字段设置如下:
<input type="hidden" name="clicked_button" id="clicked_button" value=""/>
您可以在按钮的常用onclick处理程序中设置其值:
function buttonClick(theButton){
document.getElementById('clicked_button').value = theButton.name;
return true;
}
然后您的提交按钮将是:
<input type="submit" name="save" value="Save" onclick="return buttonClick(this)"/>
<input type="submit" name="delete" value="Delete" onclick="return buttonClick(this)"/>
答案 2 :(得分:3)
请原谅我答案
似乎很明显,但为什么要使用隐藏的
场地? <input type="submit"
value="..." />
已经有效;
浏览器会发送value
单击的提交按钮,
以及表格的其余部分
数据。
<button type="submit"
name="..." value="...">...</button>
元素完美地运作
Chrome / Safari / Firefox,但失败了
IE7(正如Lèsemajesté所指出的那样)
他上面的评论);如果你不这样做
关心IE,这是通往的方式
去。
您还可以使用<input type="image" />
元素,只需记住浏览器提交
它分为两个字段:name.x
和name.y
。也,
你不能设置它的价值,但那不应该是一个
如果你只对这个问题感兴趣的问题
该领域的存在。
答案 3 :(得分:1)
您可以将要设置隐藏输入的值传递给您创建的函数:
function handleClick(val){
document.getElementById('HiddenInputID').value = val;
return true;
}
然后使用onclick
对按钮进行编码,以传递您想要的任何值:
<input type="submit" name="Name1" value="Value 1" onclick="return handleClick('Value 1')"/>
<input type="submit" name="Name2" value="Value 2" onclick="return handleClick('Value 2')"/>