2016-08-15 49 views
1

我得到了一個帶有一些輸入控件的網頁p.e.爲減法。使用不同的瀏覽器解析JavaScript中的浮點數

<table> 
     <tr> 
      <td><b>Value 1</b></td> 
      <td /> 
      <td><b>Value 2</b></td> 
      <td><b>Result</b></td> 
     </tr> 
     <tr> 
      <td> 
       <%-- step="0.01" because of Firefox-browser --%> 
       <input type="number" id="value11" oninput="SubtractionWithParameters(document.getElementById('value11').value, document.getElementById('value21').value, 'result', 2)" step="0.01" /> 
      </td> 
      <td> - </td> 
      <td> 
       <input type="number" id="value21" oninput="SubtractionWithParameters(document.getElementById('value11').value, document.getElementById('value21').value, 'result', 2)" step="0.01" /> 
      </td> 
      <td> 
       <input type="number" id="result" step="0.01" /> 
      </td> 
     </tr> 
    </table> 

對於減法我所定義的JavaScript函數SubtractionWithParameters其調用函數減法。 在輸入控件「value11」和「value21」中輸入數字,點和/或逗號時,調用SubtractionWithParameters函數並立即計算結果。

 //Subtracts the given parameters and displays the result in the input-Control with the given controlname. 
     function SubtractionWithParameters(value1, value2, resultControlName, decimalNumber) { 
      decimalNumber = typeof decimalNumber == 'undefined' ? 0 : decimalNumber; 
      document.getElementById(resultControlName).value = Subtraction(value1, value2).toFixed(decimalNumber); 
     } 

     //Subtracts the given parameters and returns the result. 
     function Subtraction(value1, value2) { 
      if (isNaN(value1) || value1 == "") { value1 = 0; } 
      if (isNaN(value2) || value2 == "") { value2 = 0; } 
      var result = parseFloat(value1) - parseFloat(value2); 
      return result; 
     } 

現在的問題是,IE和Firefox期待不同的輸入爲一個floatnumber。當我使用Firefox並在我的一個輸入控件中輸入一個包含一個點的floatnumber時,什麼也不會發生。 我如何處理這個在我的功能減法?

在此先感謝!

+1

如果IE和FF需要不同的格式,它們可能會設置爲不同的語言環境。 – ssube

+1

根據[這個問題](http://stackoverflow.com/questions/2085275/what-is-the-decimal-separator-symbol-in-javascript)和[this one]的答案(http:// stackoverflow.com/questions/12694455/javascript-parsefloat-in-different-cultures),''parseFloat()'特別需要點,並且不會使用逗號,而不考慮語言環境。但數字後的逗號不會導致錯誤:'parseFloat(「12,34」)'應該返回'12'。 – nnnnnn

+0

非常感謝!添加「.replace(',','。')」給函數賦值有所幫助。 –

回答

0

非常感謝!添加「.replace(',','。')」給函數賦值有所幫助。

相關問題