2016-06-23 3 views
1

같은 이름 속성을 가진 입력 필드 (텍스트)가 여러 개있는 경우 양식을 가져 오는 데 문제가 있습니다.'name'속성이 동일한 입력 필드를 여러 개 제출하십시오.

백엔드에서는 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"/> 

, 다른 곳에서 양식에 사용자가 과일의 이름을 입력합니다. 그런 다음 백엔드에서 코드는 데이터베이스를 통해 과일이 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 개 입력 할 수 있습니다. 두 모델 모두 이름이이고 가격이입니다. 이 양식은 제출되지 않습니다. 그것은 항상 저에게 오류를 줄 것입니다.

어떻게이 문제를 해결할 수 있을지 모르겠다. 당신은 Node.js를

또는 단일 치수의 경우 배열에 원하는

+0

다른 요소에 동일한 ID 또는 이름을 사용하는 것이 표준이 아닙니다. 요소에 다른 이름을 사용하는 것이 어떻습니까? – SalmanShariati

+0

정확히 !!!!!!!! – Deca

+0

그건 실수 였어, 내 잘못이야. 나는 신분증을 바꿨다. 다른 ID가 있어도 내 문제가 남아 있습니다. – MonkeyOnARock

답변

0

당신은, 당신의 각 레코드에 대한 JSON 개체를 만들고 백엔드에 객체의 배열을 보내 .. 그리고 액세스해야 당신은

뭔가

var myPrices = []; 
function createArray() { 
    $("input[name=price]").each(function() { 

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

     myPrices.push(price); 
    }); 

    console.log(myPrices); 
    return myPrices 
} 

등 직접 배열을 생성 할 수 있습니다 그리고 네, 여러 개의 입력 필드에 같은 이름과 ID를 사용하는 나쁜 관행입니다.

더 나은 방법이

당신은 한 행에 한 쌍을 것이라고 할 것이다. 이러한 행을 동적으로 추가하려면 하나의 버튼을 유지하십시오. 사용자가 수행 결국

는 이러한 오브젝트의 배열을 생성하고 서버 측에 보내

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

각 행의 JSON 오브젝트를 만든다.

+0

여러 입력 필드에 동일한 이름을 사용하는 문제 : 사용자는 가격 필드를 추가/제거 할 수있는 +/- 버튼을 사용합니다. 입력 할 가격이 많으면 + 버튼을 사용하여 더 많은 입력 필드를 표시 할 수 있습니다.각 입력 필드의 이름이 고유하면 내 백엔드 코드가 추가 입력 필드에 도달하지 못합니다 (백엔드에서는 '가격'이라는 이름 필드를 찾기 위해 코드가 표시되기 때문입니다). – MonkeyOnARock

+0

그러면 단순히 '가격'을 키로하고 가격 배열을 백엔드의 키 값으로 보내는 json 객체를 보낼 수 없습니까? –

+0

이것은 내가 말하려고하는 것입니다 .. http://jsfiddle.net/fmuW6/3/ –

관련 문제