代码之家  ›  专栏  ›  技术社区  ›  GSto

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

  •  11
  • GSto  · 技术社区  · 14 年前

    我有一个带有两个按钮的窗体,每个按钮都带有onclick=此表单提交(). 我在表单中有一个隐藏字段,我希望该字段的值根据单击的按钮不同而有所不同。最好的办法是什么?

    另外,在任何人说出答案之前,jQuery在本例中不是一个选项。

    4 回复  |  直到 14 年前
        1
  •  12
  •   geowa4    14 年前

    但说真的:

    1. 添加 id 到隐藏的领域
    2. document.getElementById("hiddenId").value = "mySpecialValue";

      //or (depending on which onclick handler you are in)

      document.getElementById("hiddenId").value = "myOtherSpecialValue";

    3. 按现在的方式提交表格。

    推荐ex:

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

    对另一个按钮重复上述步骤。

        2
  •  7
  •   Pat    14 年前

    <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)"/>
    
        3
  •  3
  •   elo80ka    14 年前
    1. 似乎很明显,但为什么要使用隐藏的 <input type="submit" value="..." /> 已经开始工作; 浏览器将发送 value 属于 单击的提交按钮, 以及表单的其他部分

    2. 这个 <button type="submit" name="..." value="...">...</button> 元素在 Chrome/Safari/Firefox,但在 IE7 他在上面的评论);如果你不 关心艾莉,那才是解决问题的方法 去吧。

    3. <input type="image" /> 元素,只需记住浏览器提交 它包括两个字段: name.x name.y . 也, 你不能设置它的值,但这不应该是一个错误 如果你只对 现场的存在。

        4
  •  1
  •   palswim    14 年前

    可以将要设置隐藏输入的值传递给创建的函数:

    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')"/>