2013-05-26 5 views
1

그래서 Qty 및 Price 상자에 숫자를 입력하면 Ext 상자에 합산되는 양식이 있습니다. 행을 계속하여 수량을 더 추가하고 가격을 계속 계산하면 합계가 계산되고 머티리얼 합계가 채워지기 때문에 세금이 합산되지 않고 합계 상자가 채워지지 않습니다. 자재 합계 상자에 수동으로 금액을 입력하면 세금 및 합계가 자동으로 채워지며 합계가 정확합니다. onChange, onKeyup 및 onInput을 사용해 보았지만 아무것도 작동하지 않는 것 같습니다. 질문에 대한입력 상자를 onKeyup 또는 onChange로 채울 수 없습니다.

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Material Total</td> 
<td><input type="text" name="material_total"style="width: 55px"id="material"onChange="tax()"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Sales Tax</td> 
<td><input type="text" name="sales_tax" style="width: 55px" id="salestax" onChange="tax()"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Shipping</td> 
<td><input type="text" name="ship_cost" style="width: 55px" id="shipping"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Total</td> 
<td><input type="text" name="total_parts_cost" style="width: 55px" id="total"></td> 
</table> 

업데이트 : 여기에 스크립트와 관련된 HTML은

function tax(){ 
var material = document.getElementById('material').value; 
var salestax = Math.round(((material/100) * 8.1)*100)/100; 
var total = (material*1) + (salestax * 1); 

document.getElementById('material').value = material; 
document.getElementById('salestax').value = salestax; 
document.getElementById('total').value = total; 
} 

: 여기

내 판매 세 스크립트 그래서 그것으로 재생 후 나는 발견 onpropertychange를 사용하면 IE (IE 10을 사용하고 있지만)에서만 작동하지만 파이어 폭스에서는 작동하지 않게됩니다. 나는 그것이 작동하고 나는 onkeyup을 사용하기 때문에 Ext 상자를 자동으로 채우는 Qty 및 Price 상자를 합계하는 데 사용하는 코드를 포함합니다. 나는 그것이 왜 세금 섹션에 대한 작동 실 거예요 이해가 안돼. 이 프로그래밍 방식으로 변경되고 있기 때문에 onchange를 이벤트가 재료 상자 발사되지 않고, 따라서 발광하지 않습니다 :

enter code here function multiply1() { 
var extend1 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "1_value" + i; 
    extend1 = extend1 * document.getElementById(id).value; 
} 
document.getElementById("extend1").value = extend1; 
summate(); 
} 

function multiply2() { 
var extend2 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "2_value" + i; 
    extend2 = extend2 * document.getElementById(id).value; 
} 
document.getElementById("extend2").value = extend2; 
summate(); 
} 

function multiply3() { 
var extend3 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "3_value" + i; 
    extend3 = extend3 * document.getElementById(id).value ; 
} 
document.getElementById("extend3").value = extend3; 
summate(); 
} 

function multiply4() { 
var extend4 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "4_value" + i; 
    extend4 = extend4 * document.getElementById(id).value; 
} 
document.getElementById("extend4").value = extend4; 
summate(); 
} 

function multiply5() { 
var extend5 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "5_value" + i; 
    extend5 = extend5 * document.getElementById(id).value; 
} 
document.getElementById("extend5").value = extend5; 
summate(); 
} 

function summate() { 
var material = 0; 
for (var i = 1; i <= 5; i++) { 
    var id = "extend" + i; 
    material = material + document.getElementById(id).value * 1; 
} 
document.getElementById("material").value = material; 
} 

답변

1

나는 당신이 요구하는지 이해 생각합니다.

이 기능을 수동으로 실행할 수 있습니다. 귀하가 summate() 함수에서 재질 상자를 수정하고있는 것으로 보입니다. 재료 상자, 변화를 등록 summate() 함수의 맨 끝에 다음 행을 추가하려면 :

document.getElementById("material").onchange(); 

는 희망이 당신이 원하는 것을이었다. 상자가 수정 될 때마다 업데이트하려면 수량이나 다른 필드 중 일부에이 종류의 항목을 추가해야 할 수도 있습니다.

EDIT : 재료 요소에 대해 onchange 속성을 설정 한 경우에만 작동합니다 (사용자가 oninput으로 변경 한 것으로 나타남).

+0

도움을 주신 Nile에게 감사드립니다. 응답하는 동안 onpropertychange로 변경하면 onchange가 양식 작업을하는 것으로 나타났습니다. – Jason

+0

정말요? 귀하의 업데이트 된 버전이 나를 위해 파이어 폭스 또는 크롬에서 작동하지 않습니다. – Nile

+0

기술자 Toughbook에서 사용되는 모든 기능 만 IE에서 작동해야합니다. Toughbook은 서비스 작업에만 사용되므로 다른 브라우저 옵션을 사용하지 않아도됩니다. – Jason