2011-10-04 108 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

相關問題