根据JavaScript单击的按钮传递隐藏字段值

根据JavaScript单击的按钮传递隐藏字段值,javascript,Javascript,我有一个带有两个按钮的表单,每个按钮都带有onclick=this.form.submit()。我在表单中有一个隐藏字段,我希望该字段的值根据单击的按钮而有所不同。最好的方法是什么 另外,在任何人说出答案之前,jQuery在这种情况下不是一个选项。使用Prototype:-) 但非常严肃地说: 向隐藏字段添加id 在每个处理程序中提交表单之前: document.getElementById(“hiddenId”).value=“mySpecialValue” //或(取决于您所在的onclic

我有一个带有两个按钮的表单,每个按钮都带有onclick=this.form.submit()。我在表单中有一个隐藏字段,我希望该字段的值根据单击的按钮而有所不同。最好的方法是什么

另外,在任何人说出答案之前,jQuery在这种情况下不是一个选项。

使用Prototype:-)

但非常严肃地说:

  • 向隐藏字段添加
    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')"/>