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

时间:2010-08-23 18:17:07

标签: javascript

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

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

4 个答案:

答案 0 :(得分:12)

使用原型: - )

但严肃地说:

  1. id添加到隐藏字段
  2. 在每个处理程序中提交表单之前:

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

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

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

  3. 以与现在相同的方式提交表格。

  4. 推荐前:

    <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)

  1. 请原谅我答案 似乎很明显,但为什么要使用隐藏的 场地? <input type="submit" value="..." />已经有效; 浏览器会发送value 单击的提交按钮, 以及表格的其余部分 数据。

  2. <button type="submit" name="..." value="...">...</button> 元素完美地运作 Chrome / Safari / Firefox,但失败了 IE7(正如Lèsemajesté所指出的那样) 他上面的评论);如果你不这样做 关心IE,这是通往的方式 去。

  3. 您还可以使用<input type="image" /> 元素,只需记住浏览器提交 它分为两个字段:name.xname.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')"/>