var number = /^\d+$/; //表示开始结束只能是数字          var price = $("roomPrice");
          //数字
          price.onpropertychange = function () {              if (!number.test(price.value)) {                  price.value = "";
                  price.focus();            
              }
          }IE 提示错误 Stack overflow at line 0; 溢出火狐 没有  可以 那有错啊 

解决方案 »

  1.   

    栈溢出了
    onpropertychange 是在元素属性变化时会触发 value变了当然也会触发了
    楼主在onpropertychange 函数中将value置为了空 会触发该事件 这样不断的死循环 最后栈溢出
    可通过propertyName属性来控制
    price.onpropertychange = function (o) {  //if(o.propertyName)控制是哪一个属性发生了变化 
      if (!number.test(price.value)) {  price.value = "";
      price.focus();    
      }
      }
      

  2.   


    <input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
      <script type="text/javascript">
      <!--
        document.getElementById('xx').onpropertychange=function(o){
            if(o.propertyName!='value')return;  //不是value改变不执行下面的操作
            //.函数处理
        });
      //-->
      </script>
      

  3.   

    1楼正解,楼主也可以使用onkeypu或者onkeydown这些达到目的的。如果是用纯js,onpropertychange在ie和ff下还不兼容的。