Rich text получить значение csjs

Тема в разделе "Lotus - Xpages", создана пользователем Cheburan, 6 май 2016.

  1. Cheburan

    Cheburan Member

    Регистрация:
    23 фев 2015
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте.
    Есть на Xpage рт-поле

    Код (HTML5):
    <xp:inputRichText id="text" value="#{document1.text}"
    dojoType="ibm.xsp.widget.layout.RichText">
    </xp:inputRichText>
    Хочется получить в CSJS значение, которое ввел в это поле пользователь.
    Код вида
    Код (Javascript):
    var value = '';
    var field=dojo.query('[id$="'+key+'"]').forEach (function (node, index) {
        if (node.value!=undefined){
            value = value + node.value;
        }
    });
    (в key лежит "text" естественно) возвращает пустое значение.
    Пример отсюда Validate Rich Text Field валится с ошибкой "CKEDITOR is not defined"
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Пример из твоей ссылки нормально работает
     
  3. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    563
    Симпатии:
    214
    c dojoType="ibm.xsp.widget.layout.RichText"- геморрой, Cheburan прав ((
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну дык не указывать тип. Или это критично?
     
  5. Cheburan

    Cheburan Member

    Регистрация:
    23 фев 2015
    Сообщения:
    18
    Симпатии:
    0
    Коллеги говорят, что без типа не отображает рт поле, если открывать в мобильном устройстве.
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    а обязательно на CSJS?
     
  7. Cheburan

    Cheburan Member

    Регистрация:
    23 фев 2015
    Сообщения:
    18
    Симпатии:
    0
    Хотелось бы, так как проверка нужна до сохранения документа, сообщения о необходимости заполнения полей выводятся примерно таким образом сейчас (не мое, старшие товарищи писали):
    Код (Javascript):
    function checkValidation (fieldList) {
        try {
            var result = true;
            for (var key in fieldList) {
            var fieldMsg=dojo.query('[id$="'+key+'Message"]')[0];
     
            var value = '';
            var field=dojo.query('[id$="'+key+'"]').forEach (function (node, index) {
                if (node.value!=undefined){
                    value = value + node.value;
                }
            });
     
            if ( value == ''){
                fieldMsg.className = "alert alert-danger";
                fieldMsg.innerHTML = "Необходимо заполнить поле '"+ fieldList[key]+"'!"
                fieldMsg.style.display = "";
                result = false;
            } else {
                fieldMsg.style.display = "none";
            }
        }
        return result;
        }catch (e){
            console.log (e);
        return false;
        }
    }
     
  8. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Используя dojo-type Вы используете dijit, т.е. работаете не с DOM, а с js объектом
    Замените тело forEach на:
    Код (Javascript):
    var dj = dijit.byId(node.id);
    if(dj) {
        value += dj.value;
    } else {
        if (node.value!=undefined){
            value = value + node.value;
        }
    }
     
  9. Cheburan

    Cheburan Member

    Регистрация:
    23 фев 2015
    Сообщения:
    18
    Симпатии:
    0
    Спасибо, помогло.
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну это не завязано на клиентский JS, только из экономии ресурсов сервера
     
Загрузка...

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