月度归档:2015年03月

js浮点数的四则精确计算

js的浮点数类型值在参与四则运算时,有时候会产生不正确数据,这是编程语言的通病,因为计算机是二进制的。
比如一个简单的加法:268.34 + 0.83,js得出的结果是269.16999999999996。类似的加减乘除有很多。

因此需要一个精确计算的方法,来保证精确度。Github上有几个Math库,一般项目使用未免太大。这里贴出一个从http://www.cnblogs.com/junjieok/p/3306155.html而来的轻量方法,已足够使用。
代码如下:
Continue reading js浮点数的四则精确计算

IE9的输入框oninput事件不支持退格删除

IE9中,input输入框绑定的oninput事件,无法监听到键盘的backspace delete和右键菜单的剪切、撤销、删除对内容的改变。
虽然onkeyup可以解决键盘问题,但对右键还是无法解决。所以,有种解决方法如下:

<input id="myInput" type="text">

<script>
  // Get the input and remember its last value:
  var myInput = document.getElementById("myInput"), 
      lastValue = myInput.value;
  
  // An oninput function to call:
  var onInput = function() {
    if (lastValue !== myInput.value) { // selectionchange fires more often than needed
      lastValue = myInput.value;
      console.log("New value: " + lastValue);
    }
  };
  
  // Called by focus/blur events:
  var onFocusChange = function(event) {
    if (event.type === "focus") {
      document.addEventListener("selectionchange", onInput, false);
    } else {
      document.removeEventListener("selectionchange", onInput, false);
    }
  };
  
  // Add events to listen for input in IE9:
  myInput.addEventListener("input", onInput, false);
  myInput.addEventListener("focus", onFocusChange, false);
  myInput.addEventListener("blur", onFocusChange, false);
</script>

参考:http://www.matts411.com/post/internet-explorer-9-oninput/