테스트 사이트 - 개발 중인 베타 버전입니다

단가x수량+배송비 계산 채택완료

머시기거시기 6년 전 조회 2,579

단가x수량+배송비 = 합계가 바로 나오도록 스크립트로 하고 싶은데....

전에 조금알았는데 오래되어 잊어먹었습니다.

분할필드로 저장하고 있습니다. 단가 수량은 글쓰면서 저장되구요,,,수정시 배송비를 기입하면 합계가 나타나게 하려는 것입니다.

 

    

                         단가 원                                수량   개                  배송비 

                 합계

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트

        단가 원     수량   개     배송비     합계     

function cal(formname, index){     var f = document.formname;          var price = eval("f.price"+index+".value");

    var qyt = eval("f.qty"+index+".value");

    var delivery_cost = eval("f.delivery_cost"+index+".value");

    var sum = parseInt((price*qyt))+parseInt(delivery_cost);

    eval("f.total_price"+index+".value = sum");

}

 

다시 수정했습니다 ㅋ 배열로 저장되고 불러와질줄 알았는데 테스트 해보니 아니네요 

일단 이걸로 하니깐 되긴되는데 이름을 qty[]이런식으로 설정 해야하는 건가요?

그게아니라면 이렇게 하시면 되긴됩니다 ㅋ 배열로 처리하는거는 한번 찾아봐야겠어요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

머시기거시기
6년 전
이렇게 지속적으로 감사해요,,,
동적추가다보니 배열로 해야 해서요,,ㅎ
다시 알려주신 방법으로 하니 계산은 되는데
데어터가
price필드에 배열로 들어가야 하는데 날라가네요,,,어렵네여

댓글을 작성하려면 로그인이 필요합니다.

 

</strong></p>

<p><form name="폼이름">

<? for($k=0; $k<count($price); $k++){ ?>    

    단가 <input type="text" id="price[<?=$k?>]" name="price[<?=$k?>]" value="<?=$price[$k]?>" class="inputgrn-r"  onKeyDown='onlyNumDecimalInput();'  maxlength="7" size="6">원

    수량   <input type="text" id="qty[<?=$k?>]" name="qty[<?=$k?>]" value="<?=$qty[$k]?>" class="inputgrn-r" style="width:50px"  onKeyDown='onlyNumber(this);'   itemname="수량" maxlength=6 size=6  min="1"/>개

    배송비 <input type="text" id="delivery_cost[<?=$k?>]"  name="delivery_cost[<?=$k?>]" value="<?=$delivery_cost[$k]?>"  onKeyDown='onlyNumDecimalInput();'   onKeyUp="cal(폼이름, <?=$k?>)"; itemname="배송비" maxlength=7  size=5/>

    합계 <input type="text" id="total_price[<?=$k?>]" name="total_price[<?=$k?>]" value="<?=$total_price[$k]?>" class="inputgrn-r" onKeyDown='onlyNumDecimalInput();'  itemname="합계" maxlength=8  size=7 />

    

<? } ?></p>

<p></form></p>

<p> </p>

<p><script></p>

<p>function cal(폼이름, index){

    var f = document.폼이름;

    var price = f.price[index].value();

    var qyt = f.qyt[index].value();

    var delivery_cost = f.delivery_cost[index].value();

    f.total_price[index].value = price * qyt + delivery_cost;</p>

<p>}</p>

<p></script></p>

<p> <strong>

아네 여기서 말하는 폼네임은 지정해주셔야합니다. 아마 기존에 form이 있는것 같아서 제가 임의로  formname이라고 했는데

form 지정해놓은 것이 있으면 기존의 것을 쓰시고 지정되어 있지 않다면 위의 코드 처럼

을 설정하셔야합니다. 

그리고 코드는 대략적인 길만 적었던 거라서 코드 수정해서 다시 올렸습니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

머시기거시기
6년 전
ㅎㅎ 제가 아주 어벙벙 이에요,
감사드려요~
머시기거시기
6년 전
시간내주셔어 감사합니다. 똑같이 했는데
VM204913:4 Uncaught TypeError: Cannot read property '0' of undefined
at cal (eval at <anonymous> (jquery-1.8.3.min.js:2), <anonymous>:4:24)
at HTMLInputElement.onkeyup
에러나서요,,,

function cal(update_view, index){
var f = document.update_view;
var price = f.price[index].value(); 여기에 빨간 x
var qyt = f.qyt[index].value();
var delivery_cost = f.delivery_cost[index].value();
f.total_price[index].value = price * qyt + delivery_cost;
}

댓글을 작성하려면 로그인이 필요합니다.

</strong></p>

<p><? for($k=0; $k<count($price); $k++){ ?>    </p>

<p>            

            단가 <input type="text" name="price[]" value="<?=$price[$k]?>" class="inputgrn-r"  onKeyDown='onlyNumDecimalInput();'  maxlength="7" size="6">원

                 

             수량   <input type="text" name="qty[]" value="<?=$qty[$k]?>" class="inputgrn-r" style="width:50px"  onKeyDown='onlyNumber(this);'   itemname="수량" maxlength=6 size=6  min="1"/>개</p>

<p>                 배송비 <input type="text"  name="delivery_cost[]" value="<?=$delivery_cost[$k]?>"  onKeyDown='onlyNumDecimalInput();'   onKeyUp="cal(formname, <?=$k?>)"; itemname="배송비" maxlength=7  size=5/></p>

<p>                 합계 <input type="text" name="total_price[]" value="<?=$total_price[$k]?>" class="inputgrn-r" onKeyDown='onlyNumDecimalInput();'  itemname="합계" maxlength=8  size=7 /></p>

<p>

<? } ?></p>

<p>function cal(formname, index){

    var f = document.formname;

    var price = f.price[index].value();

    var qyt = f.qyt[index].value();

    var delivery_cost = f.delivery_cost[index].value();

    f.total_price[index].value = price * qyt + delivery_cost;

}</p>

<p><strong>

아 질문을 잘못 이해했습니다, 배송비를 입력시 수정값을 적용하신다는 거죠?

대충 이런방향으로 하면 되지 않을까요 ㅋ

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

머시기거시기
6년 전
감사합니다만 Uncaught ReferenceError: formname is not defined
at HTMLInputElement.onkeyup 에러 뜨네여

댓글을 작성하려면 로그인이 필요합니다.

합계

 

그냥 이렇게 바로 계산해버리면 될것 같은데요 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

머시기거시기
6년 전
감사합니다. 이거 외에 다른 계산도 실시간으로 해야 해서 그렇습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인