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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Хотелось бы "упаковать" условие

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
DelphinPRO
Отправлено: 02 Июля, 2014 - 14:26:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Есть такое условие

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;


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

Как бы все эти условия написать покомпактнее? Чую что можно сократить, но не соображу...

(Отредактировано автором: 02 Июля, 2014 - 14:47:40)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2014 - 14:54:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. $field.keypress(function(e){
  2.    if(!/^ ... $/.test(String.fromCharCode(e.keyCode))) {
  3.        return false;
  4.    }
  5. });

?
 
 Top
DelphinPRO
Отправлено: 02 Июля, 2014 - 14:56:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




о регулярках я не подумал Улыбка
(Добавление)
нет. не въезжаю как здесь регэсп прикрутить...


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2014 - 15:16:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




http://jsfiddle[dot]net/2fKkW/
http://jsfiddle[dot]net/6fJLT/

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



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




armancho7777777 пишет:
Число с плавающей точкой и не более двух цифр на конце ?


да, спасибо )
(Добавление)
только точка с цифровой клавиатуры не набирается
(Добавление)
вот так норм http://jsfiddle[dot]net/6fJLT/6/


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Panoptik
Отправлено: 02 Июля, 2014 - 16:15:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




буквально на днях знакомый писал самопальную маску ввода номера телефона и тоже забыл за цифровую клавиатуру


-----
Just do it
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2014 - 16:15:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




DelphinPRO пишет:
спасибо )

Не за что )

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

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

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



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




armancho7777777 пишет:
Да, и надо добавить удаление точки, на тот случай, если не ввели цифру после неё:

точно )


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
nerv
Отправлено: 05 Июля, 2014 - 12:38:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




... а еще в поле можно вставить из буфера обмена

(Отредактировано автором: 05 Июля, 2014 - 12:39:02)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB