2011-10-04 82 views
0

如何改变这个数字(普通数字格式)的js代码为只接受数字和,,意思是不接受的文字或字符(如:-=+! ,和...)只接受号码和,。怎么样?数字字段只接受数和`,`

http://jsfiddle.net/fQb9X/

$(document).delegate('input.numeric:text', 'keyup', function() { 
    $val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join(""); 
    $(this).val($val) 
}); 
+0

如果避免重蹈覆辙您可能会发现生活变得更轻松并使用良好建立和测试的解决方案进行验证,如http://bassistance.de/jquery-plugins/jquery-plugin-validation。 –

回答

0

其实我写的东西,就像这家新近:

var oldnumber=''; 
var $ctrl=$('input[name=passport_number]'); 
$ctrl.focusout(function() { 
    if (isFinite($ctrl.val()) || $ctrl.val()==',') { 
     oldnumber=$ctrl.val(); 
    } else { 
     $ctrl.attr('value',oldnumber); 
    } 
}); 

基本上,如果你在一个有效的答案类型,它会记住该值。如果您只写了一个数字或',',则该字段将恢复为其先前的有效值。

如果你问我,我的解决方案非常简短,相当干净。它会检查它是否是一个数字,如果不是,它会拒绝您的输入。

编辑

如果你想让它在键入时发生的,试试这个:

$('input').bind('keyup change',function(){ 
    var v = parseInt($(this).val()); 
    $(this).val((isNaN(v) && v!=',')?'':v); 
}); 

希望帮助:)

+0

您的回答不是来自我的问题。 !? –

+0

@EmmyCharles什么?你问了一个问题就像你最后一个,我刚刚复制并粘贴我的最后一个答案,并修改它以支持','s' ... – FreeSnow

+0

@EmmyCharles检查我的编辑。 – FreeSnow

相关问题