CSJS не обновляет вычисляемое поле - PullRequest
0 голосов
/ 15 ноября 2018

Я очень редко использую CSJS, но в этом случае я пытаюсь заставить его обновить вычисляемое поле. В то время как поле имеет обновленное значение, чтобы я мог получить к нему предупреждение, я не могу отобразить его на XPage. Я пытался использовать редактируемое поле с проверкой «Только чтение», но с ним данные не отображаются и в XPage.

Я вызываю блок скриптов CSJS и знаю, что вам нужно обновить, чтобы отобразить изменения, но я поместил панель вокруг поля и попробовал ее с этим и div. Ни выдает сообщение об ошибке, но и значение не отображается.

Я использую XSP.partialRefreshGet ("# {id: остальные}"); сразу после того, как я установил значение. Я пробовал это с .partialRefreshPost, который ничего не делает, но затем я прочитал в посте Стефана Висселя "Знакомство с объектом XSP", что "... Для POST refreshId должен указывать на форму ...", и это XPage не привязан к форме. Я также попытался использовать параметр немедленного: истина.

Я прочитал статью Терезы Монахан "Библиотеки JavaScript на стороне клиента в XPages", книгу Сердара Басгмеза "10 ошибок, которые вы и каждый разработчик XPages", все, что я могу найти в Интернете, а также книгу "Освоение XPages". Я знаю, что это не должно быть так сложно, поэтому я считаю, что я что-то упускаю (возможно, глупо).

В соответствии с вышесказанным, ни XPage, ни конкретное поле не связаны с какой-либо формой. Он находится на первой вкладке таблицы с вкладками и просто отображает вычисленное значение. Значение не нужно нигде сохранять.

Я вызываю функцию в моем агенте, используя onChange = "Testing ()" в выделениях dijit / form / ComboBox, потому что мне нужны крошечные прямоугольники, и опять же, мне не нужны значения полей после того, как выборки были сделаны .

Вот простой текст в блоке скрипта:

function Testing(){
  XSP.getElementById("#{id:remainingPts}").value = "100";
  var rewards = XSP.getElementById("#{id:numOfRewards1}").value;
  alert("rewards:  " + rewards);
  XSP.partialRefreshGet("#{id:remaining}");
}

А вот как выглядит поле:

<xp:panel id="remaining">
   <xp:text escape="true" id="remainingPts" value="0">
   </xp:text>
</xp:panel>

Что я делаю неправильно?

1 Ответ

0 голосов
/ 15 ноября 2018

Я думаю, xp:text отображается как тег <span>, и в этом случае вам нужно установить .innerHtml() вместо .value(). См. Как изменить текст элемента span в JavaScript . Вам не нужно будет обновляться, чтобы увидеть изменения.

...