Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Хотелось бы "упаковать" условие
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Хотелось бы "упаковать" условие

Страниц (1): [1]
 

1. DelphinPRO - 02 Июля, 2014 - 14:26:46 - перейти к сообщению
Есть такое условие

CODE (javascript):
скопировать код в буфер обмена
  1. var k = e.which
  2.         , isDigit = (k >= 48 && k <= 57)
  3.         , isControl = (k < 32)
  4.         , isDot = (k == 46)
  5.         , isComma = (k == 44)
  6.         , isDotExists = e.target.value.indexOf('.') != -1
  7.         ;
  8.  
  9. // разрешить только цифры, точку и управляющие символы
  10. if (!isDigit && !isControl && !isDot) return false;
  11.  
  12. // запрет второй точки
  13. if (isDot && isDotExists) return false;
  14.  
  15. // после точки - не больше двух цифр
  16. if (isDigit && isDotExists) {
  17.         if (e.target.value.substr(e.target.value.indexOf('.') + 1).length >= 2)
  18.                 return false;
  19. }
  20.  
  21. return true;


суть - ввод дробного числа по маске, несколько цифр, точка, две цифры. ну суть не важна Улыбка

Как бы все эти условия написать покомпактнее? Чую что можно сократить, но не соображу...
2. armancho7777777 - 02 Июля, 2014 - 14:54:05 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. $field.keypress(function(e){
  2.    if(!/^ ... $/.test(String.fromCharCode(e.keyCode))) {
  3.        return false;
  4.    }
  5. });

?
3. DelphinPRO - 02 Июля, 2014 - 14:56:08 - перейти к сообщению
о регулярках я не подумал Улыбка
(Добавление)
нет. не въезжаю как здесь регэсп прикрутить...
4. armancho7777777 - 02 Июля, 2014 - 15:16:09 - перейти к сообщению
http://jsfiddle[dot]net/2fKkW/
http://jsfiddle[dot]net/6fJLT/

DelphinPRO, какое значение поля должно быть валидно?
Число с плавающей точкой и не более двух цифр на конце ?
http://jsfiddle[dot]net/6fJLT/5/
5. DelphinPRO - 02 Июля, 2014 - 16:11:15 - перейти к сообщению
armancho7777777 пишет:
Число с плавающей точкой и не более двух цифр на конце ?


да, спасибо )
(Добавление)
только точка с цифровой клавиатуры не набирается
(Добавление)
вот так норм http://jsfiddle[dot]net/6fJLT/6/
6. Panoptik - 02 Июля, 2014 - 16:15:04 - перейти к сообщению
буквально на днях знакомый писал самопальную маску ввода номера телефона и тоже забыл за цифровую клавиатуру
7. armancho7777777 - 02 Июля, 2014 - 16:15:53 - перейти к сообщению
DelphinPRO пишет:
спасибо )

Не за что )

DelphinPRO пишет:
точка с цифровой клавиатуры не набирается

У меня набирается.
Если я правильно понял о чём речь (правый блок "клавы").

Да, и надо добавить удаление точки, на тот случай, если не ввели цифру после неё:
CODE (javascript):
скопировать код в буфер обмена
  1. $('#field').blur(function(){
  2.     this.value = this.value.replace(/.$/, '');
  3. });
8. DelphinPRO - 02 Июля, 2014 - 16:55:50 - перейти к сообщению
armancho7777777 пишет:
Да, и надо добавить удаление точки, на тот случай, если не ввели цифру после неё:

точно )
9. nerv - 05 Июля, 2014 - 12:38:39 - перейти к сообщению
... а еще в поле можно вставить из буфера обмена

 

Powered by ExBB FM 1.0 RC1