我使用以下脚本验证文本框只输入数字和(。)这意味着它是十进制文本框验证。它在Internet Explorer和谷歌浏览器中工作正常。如果我在FireFox中执行该功能,我得到以下内容错误事件未定义。如何解决此问题?
function abc(event) {
if (event.keyCode > 47 && event.keyCode < 58) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46)
{
return true;
}
return false;
}
我将此功能称为
$('.decimalValidate').live('keypress',function(){
var decimalid=$(this).attr("id");
var decimalval=$('#'+decimalid).val();
var decimalvalidate=abc(decimalval);
if(decimalvalidate == false)
return false;
});
我为此文本框指定了此验证,
input type="text" id="Total" class="abc"
答案 0 :(得分:0)
$('.decimalValidate').live('keypress',function(e){
var decimalvalidate=abc(e); //this will point to the event of the keypress.
if(decimalvalidate == false)
return false;
});
我不确定你为什么要做所有的decimalid和decimalval操作,但是如果你想要这个事件,请按照我在上面编辑的代码中所做的那样。
祝你好运。答案 1 :(得分:0)
decimalval不是Event对象,您必须将它传递给ordert中的abc函数以找出您按下的键:
$('.decimalValidate').live('keypress',function(ev){
var decimalid=$(this).attr("id");
var decimalval=$('#'+decimalid).val();
var decimalvalidate=abc(ev);
if(decimalvalidate == false)
return false;
});
答案 2 :(得分:0)
试试这个
function abc(event) {
if(!event)
event= window.event;
if (event.keyCode > 47 && event.keyCode < 58) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46)
{
return true;
}
return false;
}
和
$('.decimalValidate').live('keypress',function(e){
var decimalid=$(this).attr("id");
var decimalval=$('#'+decimalid).val();
var decimalvalidate=abc(evt); //keypress event
if(decimalvalidate == false)
return false;
});
答案 3 :(得分:0)
$('.decimalValidate').on('keypress',function(event){
var decimalid = $(this).attr("id");
var decimalval = $('#'+decimalid).val();
var decimalvalidate = abc(event);
if(decimalvalidate == false)
return false;
});
function abc(event) {
if (event.keyCode > 47 && event.keyCode < 58) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46)
{
return true;
}
return false;
}
它可以帮助你..