2016-06-23 3 views
1

同じ名前属性を持つ複数の入力フィールド(テキスト)が存在するため、フォームを動作させるのに問題があります。同じ 'name'属性を持つ複数の入力フィールドを提出する

バックエンドでは、POSTメソッドを使用してnode.jsとMongooseを使用しています。 Here IS a sampleのthe code:

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

Here IS the入力fieldにおけるquestion:

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

Basically、somewhere else上the form a user will enter the名前のa fruit。次に、バックエンドでコードはデータベースを調べて、その果物がDB内にあるかどうかを確認します。それが(既存のフルーツ)であれば、機能が実行される。この機能では、ユーザーが入力したのが取り込まれ、DBに配列として追加されます。

このフォームは正常に動作します。価格は配列のDBに入力されます(これは私のスキーマに設定されていますが、簡単にするためにここには示されていません)。

ここで、の価格に等しい 'name'属性に注目してください。

<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

要素ごとに同じIDまたは名前を使用するのは標準的ではありません。要素に異なる名前を使用するのはなぜですか? – SalmanShariati

+0

まったく!!!!!!!! – Deca

+0

それは間違いでした、私のせいです。 IDを変更しました。異なるIDであっても、私の問題は残っています。 – MonkeyOnARock

答えて

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を使用するように悪い習慣です。

より良いアプローチは

あなたが一列にのペアを持っているだろう、ということになります。そのような行を動的に追加するには、1つのボタンを押し続けますユーザーが行われる端において

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

は、オブジェクトの配列を作成し、サーバ側に送信するように、各列のJSONオブジェクトを作ります。

+0

複数の入力フィールドに同じ名前を使用する問題について:ユーザーは価格フィールドを追加/削除できる+/-ボタンがあります。入力する価格の束がある場合、+ボタンを使用してより多くの入力フィールドを表示させることができます。各入力フィールドの名前が一意である場合、バックエンドコードは追加の入力フィールドに到達できません(バックエンドでは、「price」というラベルの名前フィールドを検索するため)。 – MonkeyOnARock

+0

あなたは単純にキーとして '価格'と価格の配列をバックエンド上のキーの値としてjsonオブジェクトを送信することはできませんか? –

+0

これは私が言っていることです.. http://jsfiddle.net/fmuW6/3/ –

関連する問題