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

2022-05-26 00:00:00 forms html 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>

这是在说"嘿,操作的控制器/process-edition,我要使子操作delete"。或"子操作addOne"。

但当我们有多行时,您需要说类似于"删除此产品"或"添加其中一个产品"之类的内容。

在这种情况下,您需要按钮提交两个类似的值:a)子操作,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>

我认为在本例中deleteaddOne是原始帖子要求的"静态赋值",而12346789将是来自数据库的"隐藏"值。该按钮"知道"ID,但不显示ID本身。

当然,这可以通过将多个表单设置为几个不同的控制器(每个表单中都有隐藏字段)来解决。但让我们假设您受限于已具有该表单的布局,并且不能在其中创建多个表单,从而禁止您隔离要发送或不发送的隐藏字段。

帖子原文:

必须对用户隐藏一个值,而必须显示另一个值。从数据库中检索隐藏的值,而显示的值是静态赋值的?


解决方案

您可以使用data- attr

<button type="submit" name="buttonname" data-value="value2" value="Value1">value</button>

然后使用Element.getAttribute()LIVEDEMO

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

alert(dataValue);

这样,您只需添加data-*

即可设置任意多个值

最好的部分是您可以使用

<input type="submit" name="buttonname" data-value3="value3" data-value="value2" value="Value1" />

Demo如果您不喜欢button

相关文章