提交具有相同名称的多个输入字段'属性

时间:2016-06-23 09:38:21

标签: javascript node.js forms mongoose

我无法让表单生效,因此有多个输入字段(文本)具有相同的名称属性。

在后端,我使用POST方法使用node.js和Mongoose。以下是代码示例:

if(existingFruit) {
        Fruit.findOneAndUpdate({fruit: req.body.fruit}, {
            $push: { price: req.body.price }},

以下是有问题的输入字段:

<label for="price">Price</label>
<input type="text" name="price" id="price"/>

基本上,在表单上的其他位置,用户将输入水果的名称。然后在后端,代码查看数据库以查看该果实是否在数据库中。如果是(existingFruit),则执行功能。此功能将以用户输入的价格为单位,并将其作为数组添加到数据库中。

此表单正常。价格将输入到数组中的数据库中(在我的模式中设置,为简单起见,此处未显示)。

现在,请注意&#39;名称&#39;属性,等于价格。假设我这样做:

<label for="price1">Price</label>
<input type="text" name="price" id="price1"/>

<label for="price2">Price</label>
<input type="text" name="price" id="price2"/>

现在,我的表单允许用户为水果输入2个价格。两者都具有价格相同的名称属性。此表格不会提交;它总会给我一个错误。

我不知道如何/在哪里解决这个问题。

1 个答案:

答案 0 :(得分:0)

您应该为每个记录创建一个json对象,并将对象数组发送到后端..并在node.js中按需要访问它

或者如果它是一个单维数组,你可以直接生成一个数组

这样的东西
var myPrices = [];
function createArray() {
    $("input[name=price]").each(function() {

        var price = $(this).val();

        myPrices.push(price);
    });

    console.log(myPrices);
    return myPrices
}

是的,对于多个输入字段使用相同的名称和ID是不良做法

更好的方法是,

你将有一对在一排。保留一个按钮以动态添加这些行。

最后,当用户完成时,将每行的json对象设为

{
    name: 'FRUITNAME',
    price : 'PRICEOFFRUIT'
}

创建此类对象的数组,然后将其发送到服务器端。