У меня есть текстовое поле формы, которое имеет событие KeyUp. В KeyUp я игнорирую все, кроме чисел, периода, обратного пространства, удаления и клавиш курсора. Итак, единственное, что может быть в поле, может быть числом или периодом.Подтверждение текстового поля, содержащего float, является допустимым значением в процентах?
Мне нужно проверить эти вещи (число станет% не более 100.00%): -Строка текстового поля является допустимым числом (которое всегда должно быть правдой, если только кто-то не вставил два «.»). -Строка текстового поля имеет максимум 2 знака после запятой -Если строка текстового поля имеет десятичную точку, у нее есть что-то после (1 или 2 десятичных знака, а не только период в конце) -Нет числа больше, чем 100 (< = 100)
примеры (то, что мне нужно проверить):
95 is true (valid, decimal places not required)
95. is false (don't need a '.' with no decimal place after)
95.0 is true
95.00 is true
95.000 is false (3 decimal places not valid) 100 is true
101.01 is false (over 100)
101 is false (over 100)
Я видел некоторые вещи, которые делают несколько кусков этого списка, но я не достаточно умен, чтобы измените регулярное выражение, чтобы получить именно то, что мне нужно. Спасибо за любую помощь!
Удивительный, очень ценится. Однако я обнаружил недостаток. Два периода возвращают true, например «90.1». вернет true. Возможно, я смогу выяснить. Я думаю, вы могли бы добавить еще один оператор if, проверяющий количество более одного периода (или что-то в этом роде). – Reno
Да, это сделало бы это. –
Играется и добавляет, что это последнее предложение if: if ((x.length - x.replace (/\./ g, "") .length)> 1) return false; – Reno