我可以为提交按钮设置两个值吗?

SaG*_*aGa 4 html forms form-submit submit-button

注意:这是对旧帖子的重写,以澄清所询问的内容.

假设我有一个显示一组行的表单(例如,顺序中的行),我想在每行之外放置一个"删除"按钮,但不幸的是我不能为每一行创建一个表单.

另外,假设表单转到"通用操作路径",即"editCart"控制器.

为了示例,我们假设在表单中还有其他几个操作,例如向数量中添加一个.

这必须使用同一表单中的多个提交按钮来完成.

如果它只是一行,那很简单,只需在按钮上添加名称/值即可!完成!

<form action="/process-edition" method="post">
    <div>My nice things</div>
    <button type="submit" name="subAction" value="delete">Delete</button>
    <button type="submit" name="subAction" value="addOne">+1</button>
</form>
Run Code Online (Sandbox Code Playgroud)

这就是说"嘿,行动的控制者/process-edition,我要做出subAction delete".或者"subAction addOne".

但是当我们有多行时,你需要说"删除这个产品"或"添加一个这个产品".

在这种情况下,您需要按钮提交两个值:a)subAction,b)要编辑的产品的ID.

<form action="/process-edition" method="post">
    <ul>
        <li>
            Product 1234: 'orange'
            <button type="submit" name="subAction" value1???="delete" value2???=1234>Delete</button>
            <button type="submit" name="subAction" value1???="addOne" value2???=1234>+1</button>
        </li>
        <li>
            Product 6789: 'lemmon'
            <button type="submit" name="subAction" value1???="delete" value2???=6789>Delete</button>
            <button type="submit" name="subAction" value1???="addOne" value2???=6789>+1</button>
        </li>
    </ul>
</form>
Run Code Online (Sandbox Code Playgroud)

我认为在这种情况下delete,addOne原始帖子要求的是"静态分配的值",1234并且6789将是来自数据库的"隐藏"值.按钮"知道"有关Id但不显示Id本身.

当然,这可以通过将多个表单设置为具有每个表单中的隐藏字段的多个不同控制器来解决.但是我们假设您已经受限于已经具有该表单的布局,并且您无法在其中创建多个表单,因此禁止您隔离要发送或不发送的隐藏字段.

邮政的原文:

必须从用户隐藏一个值,并且必须显示另一个值.从数据库中检索隐藏值,并且显示的值是静态分配的值?

Nie*_*sol 7

是的,使用不同的工具.

<button type="submit" name="buttonname" value="hiddenvalue">Shown Value</button>
Run Code Online (Sandbox Code Playgroud)


Gil*_*mbo 5

你可以使用data-attr

<button type="submit" name="buttonname" data-value="value2" value="Value1">value</button>
Run Code Online (Sandbox Code Playgroud)

然后使用Element.getAttribute() 直播 DEMO

var buttom = document.querySelector("button");
var dataValue = buttom.getAttribute("data-value");

alert(dataValue);
Run Code Online (Sandbox Code Playgroud)

这样你就可以通过添加设置尽可能多的值 data-*

最好的部分是你可以使用

<input type="submit" name="buttonname" data-value3="value3" data-value="value2" value="Value1" />
Run Code Online (Sandbox Code Playgroud)

演示,如果你不喜欢button