2013-01-07 56 views
2

我正在尝试计算单选按钮和复选框的值。 我有单选按钮按要求工作,但无法获取复选框的脚本。 我希望复选框有一个小计(工作正常),然后将小计添加到单选按钮的计算中。以下是我到目前为止。 任何建议,将不胜感激。 谢谢。一个计算中的SUM单选按钮值和复选框值 - javascript和html

<form name="form1" id="form1" runat="server"> 
<legend>Header 1</legend> 
    <p><input id="rdo_1" type="radio" value="3" name="price" onClick="DisplayPrice(this.value);"><label for="radio1">Radio 1</label></p> 
    <p><input id="rdo_2" type="radio" value="2" name="price" onClick="DisplayPrice(this.value);"><label for="radio2">Radio 2</label></p> 
    <p><input id="rdo_2" type="radio" value="1" name="price" onClick="DisplayPrice(this.value);"><label for="radio3">Radio 3</label></p> 
</form>      

<hr> 

<form name="form2" id="form2" runat="server"> 
<legend>Header 2</legend> 
    <p><input id="rdo_1" type="radio" value="100" name="price2" onClick="DisplayPrice(this.value);"><label for="rad1">Radio 1</label></p> 
    <p><input id="rdo_2" type="radio" value="200" name="price2" onClick="DisplayPrice(this.value);"><label for="rad2">Radio 2</label></p> 
</form>        

<hr> 

<form name="form3" id="form3" runat="server"> 
<legend>Header 3</legend> 
    <p><input id="rdo_1" type="radio" value="3" name="price3" onClick="DisplayPrice(this.value);"><label for="ra1">Radio 1</label></p> 
    <p><input id="rdo_2" type="radio" value="2" name="price3" onClick="DisplayPrice(this.value);"><label for="ra2">Radio 2</label></p> 
    <p><input id="rdo_2" type="radio" value="1" name="price3" onClick="DisplayPrice(this.value);"><label for="ra3">Radio 3</label></p> 
</form>  

<hr> 
<form name="checkboxCalc" id="checkboxCalc"> 
    <p><input onClick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_FBB" id="check01" value="300"/><label for="check01">Check 1</label></p> 
    <p><input onClick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_RHFG" id="check02" value="200"/><label for="check02">Check 2</label></p> 
    <p><input onClick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_LHFG" id="check03" value="200"/><label for="check03">Check 3</label></p> 
</form> 

<br /> 
<form name="form4" id="form4" runat="server"> 
    <label for="check01">Sub Total:&nbsp;</label><input id="price4" type="text" name="price4" readonly="readonly" > 
</form> 

<script language="JavaScript" type="text/javascript"> 
    var total = document.getElementById("price4") 
    function clickCh(caller){ 
    if(caller.checked){ 
    add(caller) 
    } else { 
    subtract(caller) 
    } 
    } 
    function add(caller){ total.value = total.value*1 + caller.value*1} 
    function subtract(caller){ total.value = total.value*1 - caller.value*1} 
</script> 
<hr> 

<p><label for="valueTotal">Value$:</label> 
<input type="text" name="valueTotal" id="valueTotal" value="" size="2" readonly="readonly"></p> 

<script type="text/javascript"> 
function DisplayPrice(price){ 
    var val1 = 0; 
    for(i = 0; i < document.form1.price.length; i++){ 
     if(document.form1.price[i].checked == true){ 
      val1 = document.form1.price[i].value; 
     } 
    } 

    var val2 = 0; 
    for(i = 0; i < document.form2.price2.length; i++){ 
     if(document.form2.price2[i].checked == true){ 
      val2 = document.form2.price2[i].value; 
     } 
    } 

    var val3 = 0; 
    for(i = 0; i < document.form3.price3.length; i++){ 
     if(document.form3.price3[i].checked == true){ 
      val3 = document.form3.price3[i].value; 
     } 
    } 

    var val4 = 0; 
    for(i = 0; i < document.form4.price4.length; i++){ 
      val4 = document.form4.price4[i].value; 
     } 

    var sum=parseInt(val1) + parseInt(val2) + parseInt(val3) + parseInt(val4); 
    document.getElementById('valueTotal').value=sum; 
} 
</script> 
+0

你可以在这里放置函数'DisplayPrice'和'clickCh'以便我们看到你的实现。此外,任何可能已被使用的全球变量。将有助于指出问题。 –

回答

0

在JavaScript中,如果there is single texbox of a specific name then length function will be return undefined

在这里你可以做两件事。

首先there is only single field of subtotal so u can assign value direct to val4 like given below

val4 = document.form4.price4.value; 

If you want to run for loop then

var val4 = 0; 
    var form4 = document.form4.getElementsByTagName('input'); 
    for(i = 0; i < form4.length; i++){ 
     if(form4[i].type == 'text' && form4[i].name == 'price4'){ 
      if(isNaN(parseInt(form4[i].value)) == false){ 
       val4 = parseInt(parseInt(val4) + parseInt(form4[i].value)); 
      } 
     } 

    } 

编辑

在功能

<script language="JavaScript" type="text/javascript"> 
     var total = document.getElementById("price4") 
     function clickCh(caller){ 
      if(caller.checked){ 
      add(caller) 
      } else { 
      subtract(caller) 
      } 
      finalResult(); 
     } 
     function add(caller){ total.value = total.value*1 + caller.value*1} 
     function subtract(caller){ total.value = total.value*1 - caller.value*1} 
     function finalResult(){ 
      var val1 = 0; 
      for(i = 0; i < document.form1.price.length; i++){ 
      if(document.form1.price[i].checked == true){ 
       val1 = document.form1.price[i].value; 
       } 
      } 

     var val2 = 0; 
     for(i = 0; i < document.form2.price2.length; i++){ 
      if(document.form2.price2[i].checked == true){ 
       val2 = document.form2.price2[i].value; 
      } 
      } 

      var val3 = 0; 
      for(i = 0; i < document.form3.price3.length; i++){ 
      if(document.form3.price3[i].checked == true){ 
        val3 = document.form3.price3[i].value; 
      } 
      } 

      var val4 = 0; 
      var form4 = document.form4.getElementsByTagName('input'); 
      for(i = 0; i < form4.length; i++){ 
      if(form4[i].type == 'text' && form4[i].name == 'price4'){ 
       if(isNaN(parseInt(form4[i].value)) == false){ 
        val4 = parseInt(parseInt(val4) + parseInt(form4[i].value)); 
       } 
      } 

      } 

      var sum=parseInt(val1) + parseInt(val2) + parseInt(val3) + parseInt(val4); 
      document.getElementById('valueTotal').value=sum; 
     } 
    </script> 

我希望这将是WO RK你

感谢

+0

感谢上面的代码。这绝对是正确的。唯一的问题是小计(复选框)不会动态更新总计。仅当单选按钮选择被更改时,小计值才会更新。有关如何通过对复选框进行任何更改来更新总框的任何想法单选按钮? – user1954135

+0

嗨你可以做到这一点。在你的javascript函数中点击checkCh/checkcheck复选框添加与DisplayPrice函数相同的代码。 –

+0

嗨,对不起,是一个痛苦。你能告诉我在哪里添加它。我尝试了一些变化,他们不能正常工作。谢谢你的帮助。 – user1954135

0

在你的代码尝试添加的“price4”,这是在启动空白值....尝试添加“valueTotal”的值,它是总单选按钮值的

试试这个代码...一些修改代码

<form name="form1" id="form1" runat="server"> 
<legend>Header 1</legend> 
<p> 
<input id="rdo_1" type="radio" value="3" name="price" onclick="DisplayPrice(this.value);"><label 
     for="radio1">Radio 1</label></p> 
    <p> 
    <input id="rdo_2" type="radio" value="2" name="price" onclick="DisplayPrice(this.value);"><label 
     for="radio2">Radio 2</label></p> 
    <p> 
     <input id="rdo_2" type="radio" value="1" name="price" onclick="DisplayPrice(this.value);"><label 
     for="radio3">Radio 3</label></p> 
    </form> 
    <hr> 
    <form name="form2" id="form2" runat="server"> 
    <legend>Header 2</legend> 
    <p> 
    <input id="rdo_1" type="radio" value="100" name="price2" onclick="DisplayPrice(this.value);"><label 
     for="rad1">Radio 1</label></p> 
    <p> 
    <input id="rdo_2" type="radio" value="200" name="price2" onclick="DisplayPrice(this.value);"><label 
     for="rad2">Radio 2</label></p> 
    </form> 
    <hr> 
    <form name="form3" id="form3" runat="server"> 
    <legend>Header 3</legend> 
    <p> 
<input id="rdo_1" type="radio" value="3" name="price3" onclick="DisplayPrice(this.value);"><label 
     for="ra1">Radio 1</label></p> 
     <p> 
<input id="rdo_2" type="radio" value="2" name="price3" onclick="DisplayPrice(this.value);"><label 
     for="ra2">Radio 2</label></p> 
    <p> 
    <input id="rdo_2" type="radio" value="1" name="price3" onclick="DisplayPrice(this.value);"><label 
     for="ra3">Radio 3</label></p> 
    </form> 
    <hr> 
    <form name="checkboxCalc" id="checkboxCalc"> 
    <p> 
    <input onclick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_FBB" id="check01" 
     value="300" /><label for="check01">Check 1</label></p> 
    <p> 
    <input onclick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_RHFG" 
     id="check02" value="200" /><label for="check02">Check 2</label></p> 
    <p> 
    <input onclick="clickCh(this)" type="checkbox" class="checkbox" name="PROD_LHFG" 
     id="check03" value="200" /><label for="check03">Check 3</label></p> 
    </form> 
    <br /> 
    <form name="form4" id="form4" runat="server"> 
    <label for="check01"> 
Sub Total:&nbsp;</label><input id="price4" type="text" name="price4" readonly="readonly"> 
    </form> 
    <p> 
    <label for="valueTotal"> 
     Value$:</label> 
    <input type="text" name="valueTotal" id="valueTotal" value="" size="2" readonly="readonly"></p> 
    <script language="JavaScript" type="text/javascript"> 
var total = document.getElementById("valueTotal") 
var result = document.getElementById("price4") 
function clickCh(caller) 
{ 
     if (caller.checked) 
     { 
      add(caller) 
     } else 
     { 
      subtract(caller) 
     } 
} 
function add(caller) { result.value = total.value * 1 + caller.value * 1 } 
function subtract(caller) { result.value = result.value * 1 - caller.value * 1 } 
</script> 
<hr> 
<script type="text/javascript"> 
function DisplayPrice(price) 
{ 
     var val1 = 0; 
     for (i = 0; i < document.form1.price.length; i++) 
     { 
      if (document.form1.price[i].checked == true) 
      { 
       val1 = document.form1.price[i].value; 
      } 
     } 

     var val2 = 0; 
     for (i = 0; i < document.form2.price2.length; i++) 
     { 
      if (document.form2.price2[i].checked == true) 
      { 
       val2 = document.form2.price2[i].value; 
      } 
     } 

     var val3 = 0; 
     for (i = 0; i < document.form3.price3.length; i++) 
     { 
      if (document.form3.price3[i].checked == true) 
      { 
       val3 = document.form3.price3[i].value; 
      } 
     } 

     var val4 = 0; 
     for (i = 0; i < document.form4.price4.length; i++) 
     { 
      val4 = document.form4.price4[i].value; 
     } 

     var sum = parseInt(val1) + parseInt(val2) + parseInt(val3) + parseInt(val4); 
     document.getElementById('valueTotal').value = sum; 
} 
    </script> 

谢谢。希望它可以工作