으허엉..ㅠ JS로 input 필드 값 변경시키는 법 질문... 정보
으허엉..ㅠ JS로 input 필드 값 변경시키는 법 질문...
본문
http://sir.co.kr/bbs/tb.php/g4_qa/135541
요기 봐주세영...ㅠㅠ
이거 열심히 삽질중이네여..ㅋㅋㅋ
성공하면 소스 정리해서 올릴랍니다...ㅋㅋ
영카트 리스트에서 수량 입력 가능하게하고...
체크박스에 체크할 수 있게 해서.. 일괄적으로 장바구니에 구겨넣는 기능...
다른건 다 됐는데 ct_qty[$i] 의 값 전달이 잘 안되서.ㅠ
요기 봐주세영...ㅠㅠ
이거 열심히 삽질중이네여..ㅋㅋㅋ
성공하면 소스 정리해서 올릴랍니다...ㅋㅋ
영카트 리스트에서 수량 입력 가능하게하고...
체크박스에 체크할 수 있게 해서.. 일괄적으로 장바구니에 구겨넣는 기능...
다른건 다 됐는데 ct_qty[$i] 의 값 전달이 잘 안되서.ㅠ
추천
0
0
댓글 7개

영카트 온라인 견적 기능을 응용하시면 됩니다.
온라인 견적을 사용하게 되면 체크박스에 따라 가격도 자동계산됩니다.
온라인 견적을 사용하게 되면 체크박스에 따라 가격도 자동계산됩니다.

네 고녀석을 이용중인데 그냥 수량을 입력하게만 해놓음 문제가 없는데..
수량필드 옆에 위아래 화살표모냥버튼을 두고 클릭하면 수량필드에서 숫자가 가감되는 부분을 추가했는데... 필드 name이 문제가 되네요..
왜 문제가 되는지 모르는게 문제라면 문제이지만..ㅠ
다음과 같은 스크립트를 사용합니다.. 해당부분의 구문을 첨부합니다.
<script>
function qty_change(obj, value)
{
if(value) {
obj.value = parseInt(obj.value) + 1;
}
else {
obj.value = parseInt(obj.value) - 1;
}
if(obj.value < 0) obj.value = 0;
}
</script>
<td align='center' rowspan='2'>
<input type='text' name='ct_qty[$i]' id='ct_qty_num_$i' value='0' size='4' maxlength='4' class='ed' autocomplete='off' style='text-align:right;' />
<img src='/shop/img/qty_control.gif' border=0 align=absmiddle usemap=\"#qty_control_map_{$i}\"> 개
<map name='qty_control_map_{$i}'>
<area shape='rect' coords='0, 0, 10, 9' href=\"javascript:qty_change(document.getElementById(ct_qty_num_{$i}), true);\">
<area shape='rect' coords='0, 10, 10, 19' href=\"javascript:qty_change(document.getElementById(ct_qty_num_{$i}), false);\">
</map></td>
이상하게 id값이 맞는데 동작을 안하는...
ct_qty[$i] < 이렇게 사용하면 cartupdate에서는 기본값이라 잘 작동하는데...
ct_qty_[$i] < 이렇게 사용하면 작동을안해서..
수량필드 옆에 위아래 화살표모냥버튼을 두고 클릭하면 수량필드에서 숫자가 가감되는 부분을 추가했는데... 필드 name이 문제가 되네요..
왜 문제가 되는지 모르는게 문제라면 문제이지만..ㅠ
다음과 같은 스크립트를 사용합니다.. 해당부분의 구문을 첨부합니다.
<script>
function qty_change(obj, value)
{
if(value) {
obj.value = parseInt(obj.value) + 1;
}
else {
obj.value = parseInt(obj.value) - 1;
}
if(obj.value < 0) obj.value = 0;
}
</script>
<td align='center' rowspan='2'>
<input type='text' name='ct_qty[$i]' id='ct_qty_num_$i' value='0' size='4' maxlength='4' class='ed' autocomplete='off' style='text-align:right;' />
<img src='/shop/img/qty_control.gif' border=0 align=absmiddle usemap=\"#qty_control_map_{$i}\"> 개
<map name='qty_control_map_{$i}'>
<area shape='rect' coords='0, 0, 10, 9' href=\"javascript:qty_change(document.getElementById(ct_qty_num_{$i}), true);\">
<area shape='rect' coords='0, 10, 10, 19' href=\"javascript:qty_change(document.getElementById(ct_qty_num_{$i}), false);\">
</map></td>
이상하게 id값이 맞는데 동작을 안하는...
ct_qty[$i] < 이렇게 사용하면 cartupdate에서는 기본값이라 잘 작동하는데...
ct_qty_[$i] < 이렇게 사용하면 작동을안해서..
document.getElementById 를 자바스크립트 안에 넣어보세요....
그리고 $i 함수는 php내에서 echo를 할 시에만 쓸수 있고 보통은 <?=$i?> 라고 해줘야합니다
그리고 $i 함수는 php내에서 echo를 할 시에만 쓸수 있고 보통은 <?=$i?> 라고 해줘야합니다
즉 ct_qty_<?=$i?>
그리고 덧붙이자면 ct_qty[<?=$i?>]는 Array방식입니다 ^^;
그리고 덧붙이자면 ct_qty[<?=$i?>]는 Array방식입니다 ^^;

ct_qty1 이라고 줘보세요...
그리고 form id 값도 확인해주시고요..
for 문이 재대로 작동되는지도 확인해봐야 합니다
그리고 form id 값도 확인해주시고요..
for 문이 재대로 작동되는지도 확인해봐야 합니다

제가 쓰는 함수입니다. (저도 똑같은걸 만들었죠..)
function change_qty(f, fld, idx)
{
var qty = parseInt(fld.value);
if( (fld.value.search(/[^0-9]+/) != -1) || (qty < 0) || (isNaN(qty) == true) )
{
alert('수량을 바르게 입력해 주십시오.');
fld.focus();
return false;
}
compute_line(f, idx);
}
function qty_add(f, num, idx)
{
var qty = parseInt(document.getElementById('ct_qty_'+idx).value);
var selidx = document.getElementById('it_id_'+idx).value;
if (num < 0 && qty <= 0)
{
qty = 0;
}
else if (num > 0 && qty >= 9999)
{
alert("수량은 9999 이하만 가능합니다.");
qty = 9999;
}
else
{
qty = qty + num;
}
document.getElementById('ct_qty_'+idx).value = qty;
compute_line(f, idx);
}function qty_add(f, num, idx)
{
var qty = parseInt(document.getElementById('ct_qty_'+idx).value);
var selidx = document.getElementById('it_id_'+idx).value;
if (num < 0 && qty <= 0)
{
qty = 0;
}
else if (num > 0 && qty >= 9999)
{
alert("수량은 9999 이하만 가능합니다.");
qty = 9999;
}
else
{
qty = qty + num;
}
document.getElementById('ct_qty_'+idx).value = qty;
compute_line(f, idx);
}
<input type=text id='ct_qty_<?=$idx?>' name='ct_qty[<?=$idx?>]' value='1' size=1 maxlength=5 class=ed autocomplete='off' style='text-align:right;' onblur="change_qty(this.form, this, <?=$idx?>); compute_total(this.form);">
<img src='<?=$g4[shop_img_path]?>/qty_control.gif' border=0 align=absmiddle usemap="#qty_control_map<?=$idx?>">
<map name="qty_control_map<?=$idx?>">
<area shape="rect" coords="0, 0, 10, 9" href="javascript:qty_add(this.form, +1, <?=$idx?>);">
<area shape="rect" coords="0, 10, 10, 19" href="javascript:qty_add(this.form, -1, <?=$idx?>);">
</map>
function change_qty(f, fld, idx)
{
var qty = parseInt(fld.value);
if( (fld.value.search(/[^0-9]+/) != -1) || (qty < 0) || (isNaN(qty) == true) )
{
alert('수량을 바르게 입력해 주십시오.');
fld.focus();
return false;
}
compute_line(f, idx);
}
function qty_add(f, num, idx)
{
var qty = parseInt(document.getElementById('ct_qty_'+idx).value);
var selidx = document.getElementById('it_id_'+idx).value;
if (num < 0 && qty <= 0)
{
qty = 0;
}
else if (num > 0 && qty >= 9999)
{
alert("수량은 9999 이하만 가능합니다.");
qty = 9999;
}
else
{
qty = qty + num;
}
document.getElementById('ct_qty_'+idx).value = qty;
compute_line(f, idx);
}function qty_add(f, num, idx)
{
var qty = parseInt(document.getElementById('ct_qty_'+idx).value);
var selidx = document.getElementById('it_id_'+idx).value;
if (num < 0 && qty <= 0)
{
qty = 0;
}
else if (num > 0 && qty >= 9999)
{
alert("수량은 9999 이하만 가능합니다.");
qty = 9999;
}
else
{
qty = qty + num;
}
document.getElementById('ct_qty_'+idx).value = qty;
compute_line(f, idx);
}
<input type=text id='ct_qty_<?=$idx?>' name='ct_qty[<?=$idx?>]' value='1' size=1 maxlength=5 class=ed autocomplete='off' style='text-align:right;' onblur="change_qty(this.form, this, <?=$idx?>); compute_total(this.form);">
<img src='<?=$g4[shop_img_path]?>/qty_control.gif' border=0 align=absmiddle usemap="#qty_control_map<?=$idx?>">
<map name="qty_control_map<?=$idx?>">
<area shape="rect" coords="0, 0, 10, 9" href="javascript:qty_add(this.form, +1, <?=$idx?>);">
<area shape="rect" coords="0, 10, 10, 19" href="javascript:qty_add(this.form, -1, <?=$idx?>);">
</map>

와우~ 모두 답변 감사드립니다^^;
이번을 계기로 해서 자바스크립트랑 좀 더 제대로 공부해봐야겠어요 ㅠㅠ
이번을 계기로 해서 자바스크립트랑 좀 더 제대로 공부해봐야겠어요 ㅠㅠ