Javascript 提交具有相同';名称';属性

Javascript 提交具有相同';名称';属性,javascript,node.js,forms,mongoose,Javascript,Node.js,Forms,Mongoose,我很难让表单正常工作,因为有多个输入字段(文本)具有相同的name属性 在后端,我使用node.js和Mongoose,使用POST方法。以下是代码示例: if(existingFruit) { Fruit.findOneAndUpdate({fruit: req.body.fruit}, { $push: { price: req.body.price }}, 以下是有问题的输入字段: <label for="price">Price<

我很难让表单正常工作,因为有多个输入字段(文本)具有相同的name属性

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

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),则执行一个函数。此函数将获取用户输入的价格,并将其作为数组添加到数据库中

这个表格很好用。价格将以数组的形式输入数据库(在我的模式中设置,为了简单起见,这里不显示)

现在,请注意'name'属性,它等于price。假设我对我的表单执行此操作:

<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个价格。两者都具有相同的名称属性价格。此表格不会提交;它总会给我一个错误


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

您应该为每个记录创建一个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'
}

创建一个这样的对象数组,然后将其发送到服务器端。

您应该为每个记录创建一个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'
}

创建一个这样的对象数组,然后将其发送到服务器端。

对不同的元素使用相同的id或名称是不标准的,为什么不对元素使用不同的名称呢?这是一个错误,是我的错。我换了身份证。即使使用不同的ID,我的问题仍然存在。同时更改名称对于不同的元素使用相同的ID或名称是不标准的,为什么不为元素使用不同的名称呢?这是一个错误,我的错。我换了身份证。即使使用不同的ID,我的问题仍然存在。更改名称关于在多个输入字段中使用相同名称的问题:用户有一个+/-按钮,可以在其中添加/删除价格字段。如果他们要输入一组价格,他们可以使用+按钮来显示更多的输入字段。如果每个输入字段上的名称都是唯一的,那么我的后端代码将无法访问其他输入字段(因为在后端,代码说要查找标记为“price”的名称字段)。因此,您不能简单地发送一个json对象,将“price”作为键,将price数组作为后端键的值吗?嗯,很有趣。我将尝试您的建议(将输入转换为JSON对象)并回复您。当然@MonkeyOnARock我将等待。关于多个输入字段使用相同名称的问题:用户有一个+/-按钮,可以在其中添加/删除价格字段。如果他们要输入一组价格,他们可以使用+按钮来显示更多的输入字段。如果每个输入字段上的名称都是唯一的,那么我的后端代码将无法访问其他输入字段(因为在后端,代码说要查找标记为“price”的名称字段)。因此,您不能简单地发送一个json对象,将“price”作为键,将price数组作为后端键的值吗?嗯,很有趣。我将尝试一下您的建议(将输入转换为JSON对象),然后回复您。当然@MonkeyOnARock我会等待。