jquery
  • calculated-field
  • 2013-05-08 136 views 0 likes 
    0

    我在這裏失去了一些愚蠢簡單的東西。
    一個簡單的腳本來確定行駛公里的報銷率乘以可允許的稅額(基於一個發動機大小)。簡單的計算錯誤

    每個步驟的日誌顯示找到的正確值,但文本輸入中帶有name = reimbursement屬性的最後一步返回「$ 0」。

    我錯過了什麼?

    function calcRate() { 
    var engineRate = Number(jQuery("input[name='enginesize']:checked").val()); 
    var distanceTravelled = 0.0; 
    var distances = new Array(); 
         distances[0] = Number(jQuery("#field_Distance1").val()); 
         distances[1] = Number(jQuery("#field_Distance2").val()); 
         distances[2] = Number(jQuery("#field_Distance3").val()); 
         distances[3] = Number(jQuery("#field_Distance4").val()); 
         distances[4] = Number(jQuery("#field_Distance5").val()); 
        for(var i=0; i<distances.length; i++) { 
          if(!isNaN(distances[i])) { 
           distanceTravelled = distanceTravelled + distances[i]; 
          } 
         } 
        jQuery("input[name=reimbursement]").val("$" + distanceTravelled * engineRate); 
        } 
    jQuery("input[type=radio],input[type=text]").on("change",calcRate); 
    

    回答

    2

    我改變總和線

    distanceTravelled += distances[i]; 
    

    我還交換了動態值與暫時的,它顯示$150,這是預期的結果(和@cbp提到的括號無關)。

    function calcRate() { 
        var engineRate = 10; 
        var distanceTravelled = 0.0; 
        var distances = new Array(); 
        distances[0] = 1; 
        distances[1] = 2; 
        distances[2] = 3; 
        distances[3] = 4; 
        distances[4] = 5; 
        for (var i = 0; i < distances.length; i++) { 
         if (!isNaN(distances[i])) { 
          distanceTravelled += distances[i]; 
         } 
        } 
        alert("$" + distanceTravelled * engineRate); 
    } 
    calcRate(); 
    

    http://jsfiddle.net/tcEpF/2/

    我然後在jQuery選擇換爲輸出文本框,它顯示$150

    <input name="reimbursement" /> 
    

    http://jsfiddle.net/tcEpF/3/

    假定發動機速度是單選按鈕,我繼續添加它們:

    <input type="radio" name="enginesize" value="10" />10<br> 
    <input type="radio" name="enginesize" value="100" />100<br> 
    <input type="radio" name="enginesize" value="1000" />1000<br> 
    

    點擊其中的任何顯示預期的結果:$ 150,$ 1500,$ 15000

    http://jsfiddle.net/tcEpF/4/

    我只能得出結論,field_Distance的選擇是錯誤的:

    jQuery("#field_Distance1") 
    

    您可能想要使用此名稱來獲取該字段的名稱,因爲#意味着您正在獲取ID屬性,而這可能是mi ssing。

    jQuery("input[name=field_Distance1]") 
    

    爲什麼顯示$ 0呢?由於選擇器是錯誤的,數組現在包含NaN值。 distanceTravelled在for循環後仍爲0.0,因爲!isNaN(distances[i])返回false,跳過總和。最後,任何乘以0返回0.

    +0

    成功。將選擇器從id更改爲輸入[name = xxxx],但是我可以向你保證selector屬性是正確的。 任何想法是什麼造成這種情況? – 2013-05-08 06:22:59

    +0

    查看更新的答案。 – 2013-05-08 06:28:24

    1

    有疑問時,添加括號:

    jQuery("input[name=reimbursement]").val("$" + (distanceTravelled * engineRate)); 
    
    相關問題