Ловим Enter в поле (не Web)

Тема в разделе "Работа с интерфейсом пользователя", создана пользователем morpheus, 6 ноя 2007.

  1. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    не так давно была тема про Ограничение кол-ва вводимых символов в поле

    Теперь я нагло перековырял лежащую там базу и зделал перехват нажатия Enter в поле в клиете Нотес
    с помощтю JavaScript

    Описание

    Принцип действия
    1. Пользователь заходит в поле( onFocus - Client ) и мы передаем параметр текущего поля в процедуру на JS. Запускаем мониторинг

    Код (Text):
    // Задаем параметры и начинаем мониторить символы
    startListener(this);
    2. Пока пользователь находиться в поле ( onBlur - Client ) продолжаем проверять вводимые символы
    Код (Text):
    // Пока пользователь находиться в поле - продолжаем мониторим вводимые символы
    if (checkCharCount())
    this.focus();
    else
    stopListener();
    3. В заголовке формы JS Header - Client пишем большой код
    [codebox]var listenField; // Само поле которое мы будем мониторить
    total = 0; // длинна строки


    /*
    Начинаем мониторить то что нажимает юзверь
    параметр один :

    field -- Ссылка на поле, (используем "this" из события
    onFocus или document.forms[0].fieldName)

    Что бы запустить моиториг, в событии onFocus прописать
    startListener(this);
    */
    function startListener (field) {
    listenField = field;
    checkCharCount();
    }


    /*
    Обнуляем переменные для того чтобы оставновить мониторинг
    */
    function stopListener () {
    listenField = null;
    }


    /*
    Проверка на Enter
    */
    function checkCharCount () {
    // Раз поля нету - выходим
    if (listenField == null)
    return false;

    total = parseInt( listenField.value.length ); // Берём длинну строки
    ssymbol = listenField.value; // Берём строку

    if ( total > 0 ) { // Если хоть чтото введено
    if ( ssymbol.charCodeAt(total - 1) == 10 ) { // Если последний символ - Enter
    var NoSimvol10 = ssymbol.substring( 0, total - 1 ); // Берём все символы кроме последнего
    listenField.value = NoSimvol10; // Заменяем значение поля, на значение без Enter'a
    document.forms[0].Myb.click(); // Кликаем на кнопке которая имеет id и Name - Myb
    // return true;
    }
    }

    // ждём 500 милисекунд
    setTimeout("checkCharCount()", 500);

    }[/codebox]


    Коментарии
    В поле мы должны заходить НЕ сразу при открытии формы, т.к. иначе не произойдет onFocus
    Это пробная версия, возможо чтото можно и улучшить


    Автор
    Morpheus
    спасибо Ronchik за моральную поддержку )

    Обсуждение
    тут
     

    Вложения:

    • NoSimvol10.rar
      Размер файла:
      23,7 КБ
      Просмотров:
      124
Загрузка...

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