Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2011, 15:07
Новичок на форуме
Отправить личное сообщение для andreyy05 Посмотреть профиль Найти все сообщения от andreyy05
 
Регистрация: 09.04.2011
Сообщений: 1

Проверка значения поля на ходу и обрезание лишнего..
Здравствуйте, уважаемые форумчане!

Помогите пожалуйста решить задачу, честное слово пытался решить самостоятельно, но не получилось пока...

Есть форма(типо калькулятора), в которую можно вводить только число. Число может иметь дробную часть, т.е. содержать точку.

Нужно сделать проверку для этой формы. Чтобы если мы вводим туда не число, все что не число удалялось.

Я сделал так:

function f() {
var d = document.getElementById('d');
var re = /^[0-9]+\.?[0-9]*$/;

if(d.value.search(re) ==-1) { d.value="";}

}


<input type="text" value="0"  onKeyUp="f()" id="d" onblur="if(this.value == '') { this.value='0'}" onfocus="if (this.value == '0') {this.value=''}" />


Но при таком раскладе, удаляется все полностью... Т.е. если я ввел к примеру 1234бв -то удалится полностью вся строка. А мне нужно чтобы удалялись на каждом шаге ввода, только те символы, которые не подходят под маску.

Как здесь http://obmenov.com/

Я подозреваю, что как-то можно запоминать позицию, начиная с которой перестает совпадать, и потом обрезать строку по эту позицию...

Но функций найти не могу...

Последний раз редактировалось andreyy05, 09.04.2011 в 15:45.
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2011, 15:34
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Я на днях для интереса писал функцию, которая достаёт из строки число.

function parseNumber(obj) {
	obj = (obj + "").match(/[e\.0-9-]+/gi) || [];
	for (var i = 0; i < obj.length; i++)
		if (/^-?(?:\d?\.)?\d+(?:e-?\d+)?$/i.test(obj[i]))
			return +obj[i];
	return null;
}


Успешно парсит знак "-" перед числом, десятичную точку и экспоненту (числа вида 17E3 т.е. 17000).

Набросок кода для использования этой ф-ции:

var num = parseNumber(this.value);
if (num === null)
	this.value = "";
else
	this.value = num;

Последний раз редактировалось Matre, 09.04.2011 в 15:36.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка поля Номер телефона zhuzha Общие вопросы Javascript 7 12.05.2010 16:40
Проверка на наличие значения Viper jQuery 4 07.04.2010 20:26
Дублирование значения одного поля формы в другое LatSer Общие вопросы Javascript 0 15.01.2010 14:46
проверка поля в скрытом div'е dmus AJAX и COMET 4 10.08.2009 10:34
проверка поля HTML-формы с помощью RegExp dios jQuery 0 27.08.2008 15:53