2011-12-27 3 views
1

Ну я сделал этот Jquery кодне OnKeyUp делать ничего для некоторого полукокса

$(document).ready(function(){ 
    $(".graduate").keyup(function(e){ 
     if(e.keyCode!=8 && (e.keyCode<48 && e.keyCode>57)){ 
     //some code here 
     }; 
    }); 
}); 

Я хочу, вход игнорировать ничего, кроме целых чисел писать ..

Я нашел это: но я не знаю, как преобразовать его в Jquery код .. http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onkeypress

function noNumbers(e) 
{ 
var keynum; 
var keychar; 
var numcheck; 

if(window.event) // IE 
    { 
    keynum = e.keyCode; 
    } 
else if(e.which) // Netscape/Firefox/Opera 
    { 
    keynum = e.which; 
    } 
keychar = String.fromCharCode(keynum); 
numcheck = /\d/; 
return numcheck.test(keychar); 
} 

Приведенный выше код не позволяет мне использовать забой .. Любая помощь?

+0

Другой подход: проверить значение, установленное на входе, и если это не число (регулярное выражение, IsNaN, и т.д ..), возвращает строку в входе в предыдущее содержимое. – Alfabravo

+2

@Alfabravo что об этом? http://stackoverflow.com/questions/891696/jquery-what-is-the-best-way-to-restrict-number-only-input-for-textboxes-all –

+0

Не спрашивайте меня, попробуйте и Расскажи нам!! : D (не знал плагин, я сделал такую ​​проверку вручную несколько лет назад: P) – Alfabravo

ответ

2
$(".graduate")  
.bind('keydown', function(e) { 
    var 
    editingKeys = { 
     '8' : 'delete', 
     '9' : 'tab', 
     '46' : 'canc', 
     '37' : 'leftarrow', 
     '39' : 'rightarrow', 
    }, 

    key = e.which || e.keycode, 
    keynum = (key > 47) && (key < 58), 
    keypad = (key > 95) && (key < 106); 

    if (!keynum && !keypad) { 
     return (key in editingKeys); 
    } 
}); 
+0

некоторые проблемы, с кодом .. не работает :( –

+0

извините, просто смените keyup с помощью keydown =) (посмотрите на http://jsfiddle.net/7nGkU/) – fcalderan

0

jQuery будет «всегда» давать вам код ключа в e.which. Вы можете безопасно использовать e.which != 8 в инструкции if внутри обработчика клавиатуры. то есть ..

$(".graduate").keyup(function(e){ 
    if(e.which!=8 && (e.keyCode<48 && e.keyCode>57)){ 
     //some code here 
    } 
}); 
+0

это не проблема .. Проблема в том, что я должен прямо до '// some code' игнорировать все excpet integer числа - возврат false не работает –

0

Использование регулярных выражений: http://jsfiddle.net/DSvkS/

$(document).ready(function(){ 
    $(".graduate").bind('keyup', function(event) { 
     this.value = this.value.replace(/\D/g, ""); 
    }); 
}); 

\D означает ничего, кроме 0-9.

или поддержка . и ,http://jsfiddle.net/DSvkS/4/

$(document).ready(function(){ 
    $(".graduate").bind('keyup', function(event) { 
     this.value = this.value.replace(/[^0-9\.,]/g, ""); 
    }); 
}); 

[^...] означает ничего, кроме ...:

0-9 является 0,1,2,3,4,5,6,7,8,9

\. является . Мы должны выйти на точку, используя \ как точка означает совпадение что-нибудь.

, является ,

+0

Это код довольно ясный, но он релятивистский. –

+0

Проблема в том, когда я помещаю некоторый символ в поле ввода. Я вижу это и disadeared .. Это не хорошо –