Проверка поля с типом Number

  • Автор темы Автор темы oxystile
  • Дата начала Дата начала
День добрый.
Есть поле number. Мне надо чтобы если пользователь вводит цифры, то ничего не происходит, а если вводит буквы, то поле просто чистится и пользователю месседж.
В хэлпе написано, что @IsNumber(имя_поля) вернет 1, если в поле записаны цифры.
Пробую так на Input Validation:
@If(@IsNumber(имя_моего_поля)="1";@Success;@Failure("Введите цифры."))
В итоге что бы я ни ввел, он в любом случае выдает месседж. Что не так?
 
Последнее редактирование модератором:
кавычки. Лучше вообще ="1" убрать.
Return value
flag
Boolean
Returns 1 (True) if the value is a number or a number list
Returns 0 (False) if the value is not a number or a number list
 
@If(@IsNumber(@ThisValue)=1;@Success;@Failure("Введите цифры."))
 
@IsNumber сама по себе возвращает булево значение. Хватит и @If(@IsNumber(@ThisValue);@Success;@Failure("Введите цифры."))

Но полагаю проблема не в этом. Изменитt тип поля на Number, пока у вас значение является текстом @IsNumber вернет всегда False. Если надо текстовое поле, куда можно вводить только цифры — можно пробовать @If(@IsNumber(@TextToNumber(@ThisValue));@Success;@Failure("Введите цифры."))

P.S. не проверял, пишу по памяти
 
Мне нужно чтобы в поле типа Number можно было ввести только цифры.
Все заработало, вот в таком варианте:
@If(@IsNumber(@ThisValue)=1;@Success;@Failure("Введите цифры."))

Просто пока экспериментировал, забыл, что поменял тип поля на текст. Правда если немного дописать, вот так

@If(@IsNumber(@ThisValue)=1;@Success;@Do(@Failure("Введите цифры.");FIELD имя_поля:=""))

то поле не чистится и выдается стандартная ошибка - что то вроде incorrect field value.
 
Эммм, а поле типа Number разве "само себя" не проверяет (без всяких Validation)?
 
Оно проверяет, и плюется стандартной ошибкой о несответствии типов. Инпут валидэйшн надо когда хочется своё сообщение :rolleyes: но как сделать чтобы еще и очищалось на собаках, я не знаю. =)
 
Покрутите события поля
Entering
Exiting
в совокупности с проверками на собаках дает вполне премлимые результаты)
 
Если поле - Number и надо на собаках, то в Input Translation:
@If(@ThisValue = "";@Return("");"");
@If(@IsNumber(@ThisValue)=@False;@Do(@Prompt([ok];"";"Введите цифры.");"");@ThisValue)
Все.

Но по мне, лучше, все-таки, хранить номер в текстовом поле и перед применением - конвертировать, а проверки, форматирования, преобразования и вычисления делать в onChange на LS или JS .
 
Зачем? Это только очень крайний и спорный случай.

Вы все верно написали в Input Translation, а с какой формулой это от задачи зависит.
Если формат какой-то нужен, типа 000012558, то все проще: @Right("000000000" + @ThisValue;9)
Тут только ограничение в длине цифрового кода и тип поля Text
 
Зачем? Это только очень крайний и спорный случай.

Мне так удобно:
1 Вся работа с полем - в одном событии onChange, а не разбросана по Транслейшинам, Валидейшинам, Екзитингам и т.п.
2 Весь код перед глазами
3 Я знаю, что всегда все поля текстовые (за редким исключением) - важно для формул колонок видов
4 LS JS гибче собак (хоть и медленнее)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!