javascript未捕获的ReferenceError:未定义e

时间:2014-06-25 03:19:27

标签: javascript jquery

我得到未捕获的ReferenceError:e未定义

输入字段

<input class="form-control text-right" name="amount" maxlength="45" value="${exp.Amount}" onkeyup='evMoneyFormat( e );'  required="required">

脚本

<script type="text/javascript">

function evMoneyFormat(evt) {
    //--- only accepts accepts number and 2 decimal place value
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /^[0-9]{1,14}\.[0-9]{0,2}$/; // number with 2 decimal places
    if (!regex.test(key)) {
        theEvent.returnValue = false;
        //--- this prevents the character from being displayed
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}
 </script>

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我认为它应该是(事件对象在内联上下文中可用event而不是e

onkeyup='evMoneyFormat( event );'

由于您已使用jQuery标记它,因此请使用jQuery事件处理程序而不是内联一个

答案 1 :(得分:2)

您无需将任何内容传递给onkeyup

应该是:onkeyup='evMoneyFormat()';

当你的处理程序被调用时,如果你已经为你的函数提供了一个参数(你有evt),那么事件数据将自动分配给参数。

然后,您可以在处理程序中使用evt来获取事件数据。

然而,看到你用jQuery标记了这个,更简单的方法是:

$(".form-control text-right").keyup(function(evt){
  //--- only accepts accepts number and 2 decimal place value
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode(key);
  var regex = /^[0-9]{1,14}\.[0-9]{0,2}$/; // number with 2 decimal places
  if (!regex.test(key)) {
      theEvent.returnValue = false;
      //--- this prevents the character from being displayed
      if (theEvent.preventDefault) theEvent.preventDefault();
  }
});