我得到未捕获的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>
我该如何解决这个问题?
答案 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();
}
});