маска ввода

Тема в разделе "Lotus - Программирование", создана пользователем Sereja, 14 мар 2010.

Статус темы:
Закрыта.
  1. Sereja

    Sereja Гость

    нужно что бы при вводе номера , номер записывался через тире...т.е. вводишь в форме 1234567, а записывается 123-45-67
    в аксесе есть реализация масок ввода, в лотусе или найти не могу или нет их(подскажи где искать и как делать?


    с лотусом месяц только-(
     
  2. allex

    allex Гость

    Посмотри использование like или работу с регудярными выражениями

    Ну или парси строку :whoareyou?:
     
  3. amigolinx

    amigolinx Гость

    См. хелп "Format function". Работает по принципу:
    Код (Text):
    ss = {1234567}
    ss = Format(ss, {000-00-00})
     
  4. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    спрошу тут.

    Есть текстовое поле INN с маской для ввода инн. На onchange висит

    Код (LotusScript):
        Dim w As New NotesUIWorkspace
    Dim doc As NotesDocument

    Set doc=w.CurrentDocument.Document
    doc.INN = Format(doc.INN(0), {000-000-000 00})
    Есть скрытое поле innEQ. Нужно, чтобы в нем хранилось значение из поля INN но без пробелов и тире. Пробовал trim, но я так понимаю, он убирает только пробелы и только до и после. А как выкинуть все, что отлично от цифр?
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    А так?
    Код (LotusScript):
    Dim w As New NotesUIWorkspace
    Dim doc As NotesDocument

    Set doc=w.CurrentDocument.Document
    doc.innEQ = doc.INN(0)
    doc.INN = Format(doc.INN(0), {000-000-000 00})
     
  6. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Так я попробовал сделать с самого начала, когда начал разбираться, но там есть нюанс: если человек что то не так вбил в самом ИНН, он лезет туда править, может где то не там поставить пробел или тире и в итоге эти символы попадут в innEQ. А там должны быть только цифры...
     
  7. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    что-то не в себе совсем сегодня я ...
    Если я еще не окончательно заболел, то:

    ИНН это только цифры, можно проверить правильность ввода, если там не только цифры то слать сообщение "Введите цифры"
    затем записать эти цифры в innEQ
    и только потом сделать преобразование для INN
     
  8. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Поле INN - это поле куда пользователь вводит значение, и вся приблуда с Format function только для красоты отображения. Поле innEQ - это для скоринга, оно будет отправляться вместе с другими данными в виде xml на веб сервис и в нем допустимы только цифры, без всяких красот.

    Добавлено: Сейчас попробовал на Input Validation добавить проверку @IsNumber - получается замкнутый круг: ввожу цифры, потом Format function наводит "красоту" и Input Validation ругается(
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Ох... изменение введенных данных ради отображения...
    Проще было бы сделать поле computed for display и отображать его в режиме чтения со всем форматированием, а в режиме редактирования реальную информацию... И проблем бы не было.
    А теперь... Хм...

    Либо поле Computed и код
    res:=@ReplaceSubstring(INN;"-";" ");
    res:=@implode(@trim(@explode(res;" "));"");
    res

    либо в LS
    Код (LotusScript):
     dim macro as variant
    macro = Evaluate({@implode(@trim(@explode(@ReplaceSubstring(INN;"-";" ");" "));"")},doc)
    doc.InnEq = macro(0)
    Вариант с полем проверил.
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код (LotusScript):
    Replace({000-000-000 00}, Split("-; ", ";"), "")
     
  11. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Спасибо, все получилось.
     
  12. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    На валидешне поля поставь ругань

    @if(
    @Matches(@ThisValue; "{0-9}{0-9}{0-9}{-}{0-9}{0-9}{-}{0-9}{0-9}");
    @Succes;
    @Failure("Ввидите ИНН в формате '000-00-00'!")
    )
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей