Фокус В Поле

Тема в разделе "Lotus - Xpages", создана пользователем Mitya, 2 авг 2012.

  1. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    Добрый день.

    Хочу поставить фокус в поле inputText1, делаю так

    В beforePageLoad пишу:

    inputFieldName='#{id:inputText1}';
    var inputObj = document.getElementById(inputFieldName);
    inputObj.focus();

    Пишет Error
    while executing JavaScript action expression
    Script interpreter error, line=2, col=25: [ReferenceError] 'document' not found
     
  2. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Это писать надо не beforePageLoad, а в afterPageLoad (или как оно там) и не Server Side Java Script, а Client Side Java Script.
     
  3. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    1) В afterPageLoad нет Client Side Java Script. Скрипт все равно не работает.
    2) Предложили в OnClientLoad на стороне клиента написать: XSP.getElementById("#{id:inputText1}").focus();

    Работает, но не везде. Explorer8 не отрабатывает.

    Вопрос не решен =(
     
  4. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Ну да, запарился, OnClientLoad и надо было.

    XSP.getElementById("#{id:inputText1}").focus(); - у меня в IE8 прекрасно отрабатывает
     
  5. pikar

    pikar Гость

    добавлю из своего небольшого опыта. У меня тоже onClientLoad не всегда корректно работает почему-то. Делаю так: клиентские скрипты вставляю в XPage в конец в компонент <xp:scriptBlock>, и использую dojo.addOnload и dojo.byId.
     
  6. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    ;) мой небольшой опыт еще не на столько большой как ваш, и как использовать dojo.addOnload и dojo.byId? можно кусок кода, где почитать

    Заметил, что фокус не хочет ставиться, если включаю "Опережающий ввод" в поле
     
  7. pikar

    pikar Гость

    ну как-то так:
    dojo.addOnload(function(){
    dojo.byId("#{id:inputText1}").focus();
    })

    Это все в компоненте <xp:scriptBlock>.
    А вот с опережающим вводом надо будет тоже поэкспериментировать. :)
     
  8. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    Если я правильно понял, а потом и нашел, то делаю так:
    <xp:scriptBlock id="scriptBlock1" type="text/javascript">
    <xp:this.value><![CDATA[
    dojo.addOnload(function(){
    dojo.byId("#{id:inputText1}").focus();
    })
    ]]></xp:this.value>
    </xp:scriptBlock> - НЕ РАБОТАЕТ

    Из прочитанного... Dojo (доджо) — свободная модульная библиотека JavaScript.
    это мне ее подключить к страничке надо? Как?
     
  9. pikar

    pikar Гость

    не понятно, что не работает. просто фокус не ставится? ошибки в консоли есть?
    lotus поставляется с dojo, но, кажется, ее нужно подключать все равно, в теме или на странице в ресурсах. У меня, вроде, в теме - посмотрю завтра, нет под рукой. Dojo кроссбраузерная, поэтому проблем с IE быть не должно.
     
  10. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    1) не ставится фокус в поле.
    2) ошибок при сохранении страницы -нет. Но, при загрузке в EI пишет "Выполнено, но с ошибками на странице" - "Объект не поддерживает это свойство или метод"
    3) Не могу найти в lotuse где лежит dojo библиотека, как на (рис)

    Спасибо за помощь.
     

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      44,5 КБ
      Просмотров:
      37
  11. pikar

    pikar Гость

    У меня в лотусе (8.5.3) dojo подключен автоматически. По описанию, библиотека должна быть доступна по url хост/xsp/.ibmxspres/dojoroot/dojo/dojo.js (или без xsp в начале). Поэтому ее можно подключить в ресурсы на странице или теме. Но повторюсь, у меня все и так подключено. Убедиться в этом можно, посмотрев подключенные javascript библиотеки в заголовке передаваемой html-разметки. Должно быть что-то вроде:
    <script djconfig="locale: 'ru', parseOnLoad: true" src="/xsp/.ibmxspres/dojoroot-1.6.1/dojo/dojo.js" type="text/javascript"></script>

    У меня фокус нормально работает. Вот страничка XPage.

    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:inputText id="inputText1"></xp:inputText>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:inputText id="inputText2">
    <xp:typeAhead mode="full" minChars="1">
    <xp:this.valueList><![CDATA[привет
    пока
    тест]]></xp:this.valueList>
    </xp:typeAhead></xp:inputText>
    <xp:br></xp:br><xp:br></xp:br>
    <xp:inputText id="inputText3"></xp:inputText>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="complete" immediate="false" save="true"></xp:eventHandler>
    </xp:button>
    <xp:scriptBlock>
    <xp:this.value><![CDATA[dojo.addOnLoad(function(){
    dojo.byId('#{id:inputText2}').focus();
    dojo.byId('#{id:inputText2}').select();
    });]]></xp:this.value>
    </xp:scriptBlock>
    </xp:view>

    Нормально фокусируется на втором поле даже с опережающим вводом, на всякий случай добавил выделение текста.

    Кстати, на рисунке, как я понял, структура базы. Но dojo лежит на сервере. Или локально где-то в папке с установленным лотусом.
     
Загрузка...

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