Разрешение десятичных чисел только в поле с JavaScript - PullRequest
1 голос
/ 23 июня 2010

У меня есть функция, которую я использую, чтобы ограничить входные данные формы только числами или числом и десятичными числами в зависимости от поля. Разрешение десятичных чисел и чисел достаточно просто, но я пытаюсь сделать шаг вперед и разрешить только один десятичный знак, а также убедиться, что десятичный знак не является первым символом в поле. Я успешно разрешил только одну десятичную дробь, и я также сделал это так, что десятичная дробь будет разрешена, только если «0» является первой цифрой, но я не могу получить ее, чтобы разрешить десятичную дробь, когда ЛЮБОЕ число является первой цифрой по какой-то причине. Я мог бы заставить это работать, если бы сделал массивное заявление if, но я пытаюсь избежать этого. Есть предложения?

            // this allows only one decimal, and only if the first character of the field is a zero
            else if ((('.').indexOf(keychar) > -1) && field == document.form.start_pay && document.form.start_pay.value.indexOf('.') <= -1 && document.form.start_pay.value.charAt(0) == ('0')){
                return true;
            }

Ответы [ 3 ]

3 голосов
/ 23 июня 2010
/^((?:\d\.\d)|(?:\d+))$/.test(document.form.start_pay)

покроет все ваши дела.(Должно пройти 1, 100, 0.7, 8.3 и любые другие перестановки, о которых вы можете подумать, но не разрешите .3, 1.21 ... и т. Д.)

Строка за строкой:

/ #Begin regular expression
    ^ #Starting at the beginning of the string
    ( #For group #1
        (?: #Match
            \d\.\d #A number followed by a literal . (\.) followed by a number
        )
    | #Or
        (?: #Match
            \d+ #A number one or more times
        )
    ) #End group 1
    $ #Followed by the end of the string
/ #End regular expression
2 голосов
/ 23 июня 2010

Измените его на:

        else if ((('.').indexOf(keychar) > -1) && field == document.form.start_pay && document.form.start_pay.value.indexOf('.') <= -1 && /[0-9]+/.test(document.form.start_pay.value.charAt(0))){
            return true;
        }
0 голосов
/ 23 июня 2010

Изменение:

document.form.start_pay.value.charAt(0) == ('0')

Кому:

!isNaN(document.form.start_pay.value.charAt(0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...