Программное переключение клавиатуры при получении полем фокуса. (форма PDF)

Статус
Закрыто для дальнейших ответов.

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Как Акробате, при получении полем фокуса, сделать программное переключение с ввода кириллицы на латиницу и наоборот ? (форма PDF)
 
Последнее редактирование модератором:

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 333
Реакции
7 873
Нарисуйте скриншотом, непонятно.
 

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Примерная форма в приложенном файле, там и объяснение, что желательно получить.
 

Вложения

  • 11.pdf
    377.2 КБ · Просм.: 587

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 333
Реакции
7 873
Может проще задать правила для полей формы? Чтобы если неверно заполнено поле акробат ругался?

В adobe designer - палитра object, закладка value, кнопка validation pattern (например имейл там есть среди готовых).
 

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
То что Вы предлагаете это примерно так:
Код:
function NumbersAlphabet(newsymbol)
{
    var re = /[0-9А-Яа-я-]/;//Вводятся только цифры и кириллица
    if (re.test(newsymbol))
    {
        return newsymbol;
    }
    else
    {
        return "";
    }    
}
но это не то. Это вариант с регулярным выражением я использую, он просто разрешает
ввод только определенных символов.
Видел я как-то в одной программе, именно то, что я хочу. Там длинный список полей и как
только попадаешь на какое-то поле, то там сразу автоматом устанавливается необходимая
раскладка клавиатуры.
В Delphi это делается, как пишут в инете, как-то так :
var
rus,
eng: HKL;
...
rus:=LoadKeyboardLayout("00000419", 0);
lat:=LoadKeyboardLayout("00000409", 0); //Эту часть желательно разместить в OnCreate формы.
...
SetActiveKeyboardLayout(rus); //Включить русский.
SetActiveKeyboardLayout(eng); //Включить английский.
Но я не программист, так для упрощения своей работы делаю формы.
 

JAW

15 лет на форуме
Сообщения
15 797
Реакции
3 454
Если там можно скриптец привесить, то можно делать просто замену русской буквы на латинскую и наоборот, в зависимости от поля. Не очень надёжно, но хоть как то.
 
  • Спасибо
Реакции: bsi

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Скрип можно привесить. Формы я делаю в Live Cycle Form Designer. На форумах мало кто дает какие-либо советы по этой проге, форум конкретно по Live Cycle Form Designer англоязычный, а мой английский the very bad, знания в программировании так же начальные от сюда и проблемы.
 

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Если там можно скриптец привесить, то можно делать просто замену русской буквы на латинскую и наоборот, в зависимости от поля. Не очень надёжно, но хоть как то.
Если можно примерчик опубликовать.
 

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Вот так я решил эту проблему для форм в Live Cycle Designer:
Функция
Код:
var rusAdditional = {
'А': 70 , 'Б' : 60, 'В' : 68, 'Г' : 85, 'Д' : 76, 'Е' : 84, 'Ё' : 126, 'Ж' : 58, 'З' : 80, 'И' : 66,
'Й' : 81, 'К' : 82, 'Л' : 75, 'М' : 86, 'Н' : 89, 'О' : 74, 'П' : 71, 'Р' : 72, 'С' : 67, 'Т' : 78,
'У' : 69, 'Ф' : 65, 'Х' : 123, 'Ц' : 87, 'Ч' : 88, 'Ш' : 73, 'Щ' : 79, 'Ъ' : 125, 'Ы' : 83, 'Ь' : 77,
'Э' : 34, 'Ю' : 62, 'Я' : 90, 'а' : 102, 'б' : 44, 'в' : 100, 'г' : 117, 'д' : 108, 'е' : 116, 'ё' : 39,
'ж' : 59, 'з' : 112, 'и' : 98, 'й' : 113, 'к' : 114, 'л' : 107, 'м' : 118, 'н' : 121, 'о' : 106, 'п' : 113,
'р' : 104, 'с' : 99, 'т' : 110, 'у' : 101, 'ф' : 97, 'х' : 91, 'ц' : 119, 'ч' : 120, 'ш' : 105, 'щ' : 111,
'ъ' : 93, 'ы' : 115, 'ь' : 109, 'э' : 96, 'ю' : 46, 'я' : 122,'0':48,'1':49,'2':50,'3':51,'4':52,'5':53,
'6':54,'7':55,'8':56,'9':57,'!':33,'?':63,'@':64,'#':35,'%':37,'$':36
             }  
       function Decode(utftext) {
       var c = c2 = string = "";
       var i = 0;

           while ( i < utftext.length ) {
               c = utftext.charAt(i);
               i++;
               c2 = String.fromCharCode(rusAdditional[c]);
               if (c2 == ""){c2 = c};
               string += c2;
               //string += "'"+String.fromCharCode(c)+"' : "+ c + "," + '\n';
           }
           return string;
       }

Вызов функции
Код:
form1.#subform[0].en::change - (JavaScript, client)

  if (xfa.event.newText.length > xfa.event.prevText.length && xfa.event.change.length == 1)
{
     xfa.event.change = xfa.form.form1.variables.Validation.Decode(xfa.event.change);
}
else
{
    xfa.event.change = "";
}
В функцию, кроме букв, добавлены цифры и некоторые другие символы. Кому надо можно что-то убрать или
добавить.
Всем удачи.
Особая благодарность JAW.
 
  • Спасибо
Реакции: George

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Вот еще одна функция. Вроде лучше, чем первая.
Код:
function Encode(str) {
   
    if (!str || typeof(str) == "undefined") return;
    var utf8Array = {};
    var rusAdditional = {
        'А' : 'F', 'Б' : '<', 'В' : 'D', 'Г' : 'U', 'Д' : 'L', 'Е' : 'T','Ж' : ':',
        'З' : 'P', 'И' : 'B', 'Й' : 'Q', 'К' : 'R', 'Л' : 'K', 'М' : 'V','Н' : 'Y',
        'О' : 'J', 'П' : 'G', 'Р' : 'H', 'С' : 'C', 'Т' : 'N', 'У' : 'E','Ф' : 'A',
        'Х' : '{', 'Ц' : 'W', 'Ч' : 'X', 'Ш' : 'I', 'Щ' : 'O', 'Ъ' : '}','Ы' : 'S',
        'Ь' : 'M', 'Э' : '"', 'Ю' : '>', 'Я' : 'Z', 'а' : 'f', 'б' : ',','в' : 'd',
        'г' : 'u', 'д' : 'l', 'е' : 't', 'ж' : ';', 'з' : 'p', 'и' : 'b','й' : 'q',
        'к' : 'r', 'л' : 'k', 'м' : 'v', 'н' : 'y', 'о' : 'j', 'п' : 'g','р' : 'h',
        'с' : 'c', 'т' : 'n', 'у' : 'e', 'ф' : 'a', 'х' : '[', 'ц' : 'w','ч' : 'x',
        'ш' : 'i', 'щ' : 'o', 'ъ' : ']', 'ы' : 's', 'ь' : 'm', 'э' : "'",'ю' : '.',
        'я' : 'z', 'ё' : '`', 'Ё' : '~',
        '"':'@','№' : '#',';' : '$',':' : '^','?' : '&','.' : '/',',' : '?'
   }
    for (i in rusAdditional) utf8Array[i] = rusAdditional[i];
    var res = "";
    for(i = 0; i < str.length; i++) {
        var simbol = str.substr(i,1);
        res += typeof utf8Array[simbol] != "undefined" ? utf8Array[simbol] : simbol;
    }
    return res;
}
 
  • Спасибо
Реакции: George
Статус
Закрыто для дальнейших ответов.