我使用以下函数进行十进制验证。文本框只允许输入数字和.(点)符号。它在 IE 和 Chrome 中工作正常。我的问题是我得到事件未定义错误。如何解决这个问题?我有很多文本框验证。所以我创建了常见的小数验证,
//Call the Function
$('.decimalValidate').live('keypress',function(){
var decimalid=$(this).attr("id");
var decimalval=$('#'+decimalid).val();
var decimalvalidate=ApplyDecimalFilter(decimalval);
if(decimalvalidate == false)
return false;
});
//十进制验证函数。它只允许一个。 symbol.everything 在 IE 和 Chrome 上工作正常
function ApplyDecimalFilter(id)
{
try {
return NewDecimalFilter(id, event);
} catch (e) {
alert(e.message);
}
}
function NewDecimalFilter(o, event) {
if (event.keyCode > 47 && event.keyCode < 58) {
return true;
}
if ((event.keyCode == 8 || event.keyCode == 46) && o.indexOf('.') == -1) {
return true;
}
return false;
}
我在文本框中使用这个 decimalValidate 类,例如,
input type="text" id="InputLoanAmount" class="decimalValidate" style="width:100px"
最佳答案
在 firefox 中,event
不是全局的。 window.event
是 undefined
。您需要将事件作为参数传递。顺便说一下,如果你使用 jQuery >= 1.7,你应该使用 .on
而不是 .live
。
$('.decimalValidate').live('keypress', function (e) {
var decimalid = $(this).attr("id");
var decimalval = $('#' + decimalid).val();
var decimalvalidate = ApplyDecimalFilter(decimalval, e);
if (decimalvalidate == false) return false;
});
function ApplyDecimalFilter(id, event) {
try {
return NewDecimalFilter(id, event);
} catch (e) {
alert(e.message);
}
}
关于FireFox 中的 Javascript 错误不在 IE 和 Chrome 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11256257/