проверка процентного содержания текстового поля в JavaScript - PullRequest
0 голосов
/ 28 сентября 2010

Как мы можем сделать проверку для процентных чисел в текстовом поле. Мне нужно проверить данные этого типа

Пример: 12-3, 33,44а, 44, а3,56, 123

спасибо заранее Шри

Ответы [ 4 ]

2 голосов
/ 03 июня 2011

'' '' Добавить текстовое поле '' '' '

<asp:TextBox ID="PERCENTAGE" runat="server"
onkeypress="return ispercentage(this, event, true, false);"
MaxLength="18" size="17"></asp:TextBox>

'' '' 'Скопируйте нижеприведенную функцию и вставьте в тег ..' '' '' ''

 <script type="text/javascript">
 function ispercentage(obj, e, allowDecimal, allowNegative) 
 {
   var key;
   var isCtrl = false;
   var keychar;
   var reg;
   if (window.event) 
   {
     key = e.keyCode;
     isCtrl = window.event.ctrlKey
   }
   else if (e.which)
   {
     key = e.which;
     isCtrl = e.ctrlKey;
   }
   if (isNaN(key)) return true;
   keychar = String.fromCharCode(key);
   // check for backspace or delete, or if Ctrl was pressed
   if (key == 8 || isCtrl)
   {
     return true;
   }
   ctemp = obj.value;
   var index = ctemp.indexOf(".");
   var length = ctemp.length;
   ctemp = ctemp.substring(index, length);
   if (index < 0 && length > 1 && keychar != '.' && keychar != '0')
   {
     obj.focus();
     return false;
   }
   if (ctemp.length > 2)
   {
     obj.focus();
     return false;
   }
   if (keychar == '0' && length >= 2 && keychar != '.' && ctemp != '10') {
     obj.focus();
     return false;
   }
   reg = /\d/;
   var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
   var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
   return isFirstN || isFirstD || reg.test(keychar);
}
</script>
0 голосов
/ 28 сентября 2010

Вы можете дополнительно оптимизировать это выражение. В настоящее время работает для всех заданных шаблонов.

^\d*[aA]?[\-.]?\d*[aA]?[\-.]?\d*$
0 голосов
/ 29 сентября 2010

Наконец я попробовал простую проверку и хорошо работает: - (

функция validate () {var str = document.getElementById ('процент'). Value; if (isNaN (str)) {//alert ("значение выходит за пределы диапазона или слишком много десятичного числа");} иначе if (str> 100) {// alert ("значение превышено");} в противном случае if (str <0) {// alert ("значение недопустимо");}} </p>

0 голосов
/ 28 сентября 2010

Если вы говорите о проверке правильности указанного текста в процентах, вы можете сделать одно из нескольких:

  • подтвердите его с помощью регулярного выражения, например ^[0-9]+\.?[0-9]*$, затем просто преобразуйте его в значение с плавающей запятой и проверьте, что оно находится в диапазоне от 0 до 100 (этому конкретному регулярному выражению требуется ноль перед десятичным знаком для значений меньше единицы, но вы можете адаптировать его для обработки в противном случае).
  • преобразовать его в число с плавающей точкой, используя метод, который вызывает исключение для недопустимых данных (а не просто останавливается на первом неверном символе.
  • используйте сложное регулярное выражение, которое проверяет правильность записей без необходимости преобразования в число с плавающей точкой.
  • просто бегите по текстовому символу, считая цифры (a), десятичные точки (b) и нечисловые (c). При условии, что a - по крайней мере один, b - самое большее один, а c - ноль, затем конвертируйте в число с плавающей точкой.

Я понятия не имею, поддерживает ли ваша среда какие-либо этих параметров, поскольку вы на самом деле не указали, что это такое: -)

Однако я предпочитаю выбрать вариант 1, 2, 4 и 3 (в таком порядке), поскольку я не большой поклонник запутанных регулярных выражений. Я склонен думать, что они приносят больше вреда, чем пользы, когда они становятся сложными для понимания менее чем за три секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...