Проверка текстового поля на число в момент ввода данных

Делаем правильную и хорошую проверку на число

function checkNumberFields(e, k){

	var str = jQuery(e).val();
	var new_str = s = "";

	for(var i=0; i < str.length; i++){

		s = str.substr(i,1);

		if(s!=" " && isNaN(s) == false){// если цифра
			new_str += s;
		}
	}
	if(eval(new_str) > 200){ new_str = 200; }
	if(eval(new_str) == 0){ new_str = ""; }

	jQuery(e).val(new_str);

}

jQuery("input").keyup(function(event){// когда пользователь отпускает клавишу клавиатуры
    checkNumberFields(this, event);
}).keypress(function(event){// когда пользователь нажимает клавишу клавиатуры и удерживает её в нажатом состоянии
    checkNumberFields(this, event);
}).change(function(event){// когда поля теряет фокус
    checkNumberFields(this, event);
}).click(function(){
	this.select();
});

27.05.2009 10:25

Комментарии

можно покороче: jQuery("input").bind('keyup keypress change', function(event){ checkNumberFields(this, event); }).click(function(){ this.select(); });
|
Типичный "индусский код"... Вместо того чтобы написать примерно так, одной строкой: <input type="text" size="4" onKeyPress ="if ((event.keyCode < 48) (event.keyCode > 57)) event.returnValue = false;">
Omm |
последний код красив, но не устраивает. Тогда на коленке был написан отакой. a=document.forms["f"].cost; b=''; c='0123456789.,'; for(i=0; i<a.value.length; i++) { if (c.indexOf(a.value[i])!=-1) {b=b+a.value[i]} } a.value=b.split(',').join('.'); if (a.value.split('.').length>2) {b=a.value.split('.'); a.value=b[0]+'.'+b[1]} убирает из инпута 'cost' все кроме 1234567890., Запятую меняет на точку. Последняя строка удаляет лишние точки и то что за ними.
Леша |
фигня, правая кнопка мыши и вставляй что хочешь...
|
индусы блин собрались function checkNumberFields(n){ var reg=/^\d+$/ if (!reg.test(n)) return false; }
|
Вот блин... еще и в функции, в конце забыл добавить return true;
|
Это так же вешать на событие jQuery("input").keyup(function(event){// когда пользователь отпускает клавишу клавиатуры checkNumberFields(this, event); }).keypress(function(event){// когда пользователь нажимает клавишу клавиатуры и удерживает её в нажатом состоянии checkNumberFields(this, event); }).change(function(event){// когда поля теряет фокус checkNumberFields(this, event); }).click(function(){ this.select(); }); Можете целиком код вписать, пожалуйста? =)
Adward |
А я обычно прямо так и возвращаю: function checkNumberFields(n){ return !!(/^\d+$/.test(n)); } Двойое отрицание - перевод в boolean.
Sage |

Copyrights © 2007 - 2026 YaPro.Ru