我无法让表单生效,因此有多个输入字段(文本)具有相同的名称属性。
在后端,我使用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个价格。两者都具有价格相同的名称属性。此表格不会提交;它总会给我一个错误。
我不知道如何/在哪里解决这个问题。
答案 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'
}
创建此类对象的数组,然后将其发送到服务器端。