단가x수량+배송비 계산

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
단가x수량+배송비 계산

QA

단가x수량+배송비 계산

본문

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

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

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

 

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

            
            단가 <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"/>개

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

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


<? } ?>

이 질문에 댓글 쓰기 :

답변 4

<form name="폼이름">
<? for($k=0; $k<count($price); $k++){ ?>    
    단가 <input type="text" name="price<?=$k?>" value="<?=$price[$k]?>" class="inputgrn-r"  onKeyDown='onlyNumDecimalInput();'  maxlength="7" size="6">원
    수량   <input type="text" 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"  name="delivery_cost<?=$k?>" value="<?=$delivery_cost[$k]?>"  onKeyDown='onlyNumDecimalInput();'   onKeyUp="cal(formname, <?=$k?>)"; itemname="배송비" maxlength=7  size=5/>
    합계 <input type="text" name="total_price<?=$k?>" value="<?=$total_price[$k]?>" class="inputgrn-r" onKeyDown='onlyNumDecimalInput();'  itemname="합계" maxlength=8  size=7 />
    
<? } ?>

</form>

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[]이런식으로 설정 해야하는 건가요?

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

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

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

 

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


<? for($k=0; $k<count($price); $k++){ ?>    
            
            단가 <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"/>개
                 배송비 <input type="text"  name="delivery_cost[]" value="<?=$delivery_cost[$k]?>"  onKeyDown='onlyNumDecimalInput();'   onKeyUp="cal(formname, <?=$k?>)"; itemname="배송비" maxlength=7  size=5/>
                 합계 <input type="text" name="total_price[]" value="<?=$total_price[$k]?>" class="inputgrn-r" onKeyDown='onlyNumDecimalInput();'  itemname="합계" maxlength=8  size=7 />

<? } ?>
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;
}

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

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

 

<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 />
    
<? } ?>
</form>
 
<script>
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;
}
</script>
 

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

form 지정해놓은 것이 있으면 기존의 것을 쓰시고 지정되어 있지 않다면 위의 코드 처럼<form name="폼이름"></form>을 설정하셔야합니다. 

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

시간내주셔어 감사합니다. 똑같이 했는데
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;
}

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT