根据JavaScript单击的按钮传递隐藏字段值
我有一个带有两个按钮的表单,每个按钮都带有onclick=this.form.submit()。我在表单中有一个隐藏字段,我希望该字段的值根据单击的按钮而有所不同。最好的方法是什么 另外,在任何人说出答案之前,jQuery在这种情况下不是一个选项。使用Prototype:-) 但非常严肃地说:根据JavaScript单击的按钮传递隐藏字段值,javascript,Javascript,我有一个带有两个按钮的表单,每个按钮都带有onclick=this.form.submit()。我在表单中有一个隐藏字段,我希望该字段的值根据单击的按钮而有所不同。最好的方法是什么 另外,在任何人说出答案之前,jQuery在这种情况下不是一个选项。使用Prototype:-) 但非常严肃地说: 向隐藏字段添加id 在每个处理程序中提交表单之前: document.getElementById(“hiddenId”).value=“mySpecialValue” //或(取决于您所在的onclic
id
document.getElementById(“hiddenId”).value=“mySpecialValue”代码>
//或(取决于您所在的onclick处理程序)
document.getElementById(“hiddenId”).value=“myOtherSpecialValue”代码>
对另一个按钮重复上述操作。假设您已设置了如下隐藏字段:
<input type="hidden" name="clicked_button" id="clicked_button" value=""/>
然后您的提交按钮将是:
<input type="submit" name="save" value="Save" onclick="return buttonClick(this)"/>
<input type="submit" name="delete" value="Delete" onclick="return buttonClick(this)"/>
您可以将要设置隐藏输入的值传递给您创建的函数:
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')"/>
…
元素在中完美地工作
Chrome/Safari/Firefox,但失败
IE7(正如莱塞·马耶斯特在报告中指出的那样)
他在上面的评论);如果你不
关心我,那才是解决问题的方法
去吧
元素,只需记住浏览器提交
它包括两个字段:name.x
和name.y
。也,
您不能设置其值,但这不应该是
如果你只对这个问题感兴趣
现场的存在如果W3C修复了SubmitInput/button元素,那么就不需要JS或隐藏字段。就目前情况而言,在没有JS的情况下,你想做什么的唯一方法就是只使用图像提交(确保为使用纯文本浏览器或屏幕阅读器的用户提供alt文本)。我们可以让“使用原型”meme像“使用jquery”meme一样流行吗?;)value属性还用于显示按钮文本,因此通常不适合将数据传送到应用程序。是的,但取决于OP想要发送的值,它仍然可以工作。另外,其他两个选项仍然有效。我更喜欢这个解决方案,因为在禁用JavaScript的情况下提交表单也是可能的,而@geowa4的解决方案则不是这样。谢谢你提供了干净的解决方案。
function handleClick(val){
document.getElementById('HiddenInputID').value = val;
return true;
}
<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')"/>