Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Убираем 0 в начале вводимой строки (https://javascript.ru/forum/dom-window/36799-ubiraem-0-v-nachale-vvodimojj-stroki.html)

shkarbatov 27.03.2013 19:02

Убираем 0 в начале вводимой строки
 
Добрый день.

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

function validate(evt) {
		var theEvent = evt || window.event;
		var key = theEvent.keyCode || theEvent.which;
		key = String.fromCharCode(key);
		var regex = /[0-9]|/;
		if( !regex.test(key) ) {
			theEvent.returnValue = false;
			if(theEvent.preventDefault) theEvent.preventDefault();
		}
	}


Спасибо!

devote 27.03.2013 19:08

function validate(evt) {
    var theEvent = evt || window.event;
    var target = theEvent.target || theEvent.srcElement;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[0-9]|/;
    if( !regex.test(key) || (!target.value.length && !+key)) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

shkarbatov 27.03.2013 19:16

Спасибо, сейчас попробую

shkarbatov 27.03.2013 19:20

Если я выделяю строку, а потом нажимаю 0, то тогда я могу проставить много нулей.

Подскажите, как быть.

rgl 28.03.2013 14:13

Задача в такой постановке вообще не решается. Вы можете ввести число 100000000000000, потом мышкой выделить единичку и удалить ее.

shkarbatov 28.03.2013 18:25

Надо делать ParseInt и если == 0, тогда очищать строку.

devote 28.03.2013 20:10

или можно заюзать мою старую наработку:
<script type="text/javascript" src="https://raw.github.com/devote/letJS/master/let.js"></script>

<div>Вводить разрешено только числа, любые. Дробные включительно.</div>
<input type="text" data-let-input="/^[0-9\.]+$/" data-let-template="/^(\d+\.?\d{0,2}|)$/" />

<div>Вводить разрешено только целые числа.</div>
<input type="text" data-let-input="/^[0-9]+$/" data-let-template="/^(\d*)$/" />

<div>Вводить разрешено только целые числа и запрещено число 0 в начале.</div>
<input type="text" data-let-input="/^[0-9]+$/" data-let-template="/^([1-9]\d*|)$/" />
Данная библа работает для элементов INPUT и TEXTAREA, так же для TEXTAREA есть дополнительный атрибут: data-let-length="100" указывающий максимальное количество символов ввода текста.

Так же включена обработка вставки и вырезки буфера обмена.

Лежит в Gist: https://gist.github.com/devote/5264299

shkarbatov 29.03.2013 11:05

Спасибо большое! Очень хорошая библиотека, уже юзаю =)


Часовой пояс GMT +3, время: 14:17.