Javascript и Xpages

doka

Well-Known Member
18.02.2010
118
0
#1
Два варианта кода:
1)
<input id="c555" value="1232"></input>
<script type="text/javascript">
function init () {
value1 = document.getElementById("c555").value;
alert(value1+" - Вот");
}


2)
<xp:inputText id="c555" value="1232"></xp:inputText>
<script type="text/javascript">
function init () {
value1 = document.getElementById("c555").value;
alert(value1+" - Вот");
}

В первом варианте alert отрабатывает нормально, а во втором нет. В чем проблема?
 

doka

Well-Known Member
18.02.2010
118
0
#3
И в клиенте и в браузере у меня ошибку не выдает. Доходит до этой сточки и дальше код просто не выполняется
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#4
doka
Скорее всего ты не тот компонент вызываешь...
Дело в том, что xpage-компоненты именуются в коде по другому.
В дизайнере - одно, в коде страницы - другое.
Попробуй найти название компонента в коде страницы....

попробуй вот так
PHP:
document.getElementById("#{id:c555}").value;
 
13.03.2009
625
2
#5
Ставим firefox + firebug, открываем страницу, открываем firebug, смотрим dom на предмет наличия элемента с указанным id.
если не помогает - ставим брекпоинт внутрь функции, открываем консоль javascript, далее дебажим как обычно.
p.s. а где собсна вызов функции init?
 

doka

Well-Known Member
18.02.2010
118
0
#6
Не помогло. А у тебя что так заработало?

p.s. а где собсна вызов функции init?
Вызов в кнопке. С ним все нормально, если только для функций с элементами xpages не требуется специального вызова)
 
13.03.2009
625
2
#7
я ж говорю - посмотрите код страницы в браузере. не будет там элемента с вашим id. xpage затирает его своим спец id.
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/...t_on_xpages.htm
а firebug поставьте. это необходимый инструмент при разработке любых web приложений, в т.ч. с использованием xpages.
 

doka

Well-Known Member
18.02.2010
118
0
#8
turumbay
Спасибо, я понял, сижу разбираюсь

Может что-то не так делаю? В коде id="view:_id1:_id2:_id5:c555". Использовал конструкцию из примера:

var comboID = 'view:_id1:c555'; / var comboID = 'view:_id1:_id2:_id5:c555';

value1 = document.getElementById("comboID").value;

Какое обращение к элементу правильное?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#9
Лови рабочий пример. Только учти, если сервер и дизайнер разных версий - СОХРАНЯТЬ ИЗМЕНЕНИЯ КОДА ТОЛЬКО ИЗ ЗАКЛАДКИ SOURCE
Дело в том, что у дизайнеров 8.5 и 8.5.1 разные теги для описания события клиента!!!!
И код из дизайнера 8.5.1 не будет выполняться на сервере 8.5

Мой пример адаптирован для дизайнера 8.5

Код:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<xp:inputText id="c555"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button id="SwitchLink1_2" rendered="true" value="TEST">
<xp:eventHandler event="onclick">
<xp:this.handlers>
<xp:handler type="text/javascript">
<xp:this.script><![CDATA[
var switch_id = '#{java script:getClientId("c555")}';
var switch_code = document.getElementById( switch_id ).value;

alert( switch_code )

]]></xp:this.script>
</xp:handler>
</xp:this.handlers>
</xp:eventHandler>
</xp:button>		
</xp:view>
 

doka

Well-Known Member
18.02.2010
118
0
#10
NickProstoNick
Да, у меня 8.5.1 и 8.5. Твой код не пошел.
Изменил var switch_code = document.getElementById( switch_id ).value;
на var switch_code = document.getElementById('view:_id1:c555').value; - заработало
Скопировал код в проект - выдает ошибку
document.getElementById("view:_id1:c555") has no properties - кавычки двойные(может в них проблема?)


Чудеса в решете. Спасибо, постараюсь разобраться.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#11
NickProstoNick
Да, у меня 8.5.1 и 8.5. Твой код не пошел.
Изменил var switch_code = document.getElementById( switch_id ).value;
на var switch_code = document.getElementById('view:_id1:c555').value; - заработало
Скопировал код в проект - выдает ошибку
document.getElementById("view:_id1:c555") has no properties - кавычки двойные(может в них проблема?)


Чудеса в решете. Спасибо, постараюсь разобраться.
Я же тебе говорю.... открываешь свою тестовую форму... или чего там у тебя...
переходишь в закладку Source....
Копируешь то что я тебе предложил... и заменяешь в своей форме... ВСЕ ЦЕЛИКОМ!!!
И в ЭТОЙ ЖЕ ЗАКЛАДКЕ Source сохраняешь!
Все работает!

А чтоб не заниматься ерундой - поставь дизайнер той же версии что и сервер!
 

doka

Well-Known Member
18.02.2010
118
0
#12
NickProstoNick
Я не сразу заметил что ты код изменил. В таком варианте работает, но если тоже самое поместить в функцию init() и по нажатию её вызвать пишет ошибку document.getElementById( switch_id ) has no properties
Я оставил определение switch_id за пределом функции, а init определил как function init(value1), и сделал вызов init(switch_id)

Ещё раз спасибо за помощь!