Кажется, я не могу заставить событие onChange срабатывать в xp: comboBox. djComboBox работает нормально, но у меня есть другие проблемы, которые здесь не актуальны.
Нет проблем с такими событиями, как onBlur
Эти два фрагмента показывают проблему, я, вероятно, упускаю что-то очевидное, но любая помощь приветствуется.
<xp:comboBox id = "comboBox1" style = "width:130.0px"
value = "#{viewScope.xpcombo}" disableClientSideValidation = "true" immediate = "true">
<xp:selectItem itemLabel = "" id = "selectItem3"></xp:selectItem>
<xp:selectItem itemLabel = "Cease" itemValue = "Cease"
id = "selectItem1">
</xp:selectItem>
<xp:eventHandler event = "onChange" submit = "true"
refreshMode = "full" id = "eventHandler1" disableValidators = "true">
</xp:eventHandler>
</xp:comboBox>
<xp:text id = "computedField1">
<xp:this.value><![CDATA[#{javascript:var req = getComponent("comboBox1").getValue();
if ( req == "Cease") {return "Some cease text frome combBox1";}
}]]></xp:this.value>
</xp:text>
<xe:djComboBox id = "djComboBox" style = "width:130.0px"
value = "#{viewScope.djcombo}" immediate = "true">
<xp:selectItem itemLabel = "" id = "selectItem5">
</xp:selectItem>
<xp:selectItem itemLabel = "Cease"
itemValue = "Cease" id = "selectItem6">
</xp:selectItem>
<xp:eventHandler event = "onChange" submit = "true" refreshMode = "full"
id = "eventHandler2" disableValidators = "true">
</xp:eventHandler>
</xe:djComboBox>
<xp:text id = "computedField2">
<xp:this.value><![CDATA[#{javascript:var req = getComponent("djComboBox").getValue();
if ( req == "Cease") {
return "Some cease text frome djCombBox";}
}]]></xp:this.value>
</xp:text>
Извините, я пытался сделать это простым примером для иллюстрации. Поле со списком привязано к внутреннему документу, поэтому это не сработает, если я не буду сохранять его при каждом изменении, что кажется неправильным? Как ни странно, он работает так, как предполагалось, если он содержится в диалоговом окне.
Я хочу сказать, что вы должны проверить источник данных в своем вычисляемом поле вместо использования getComponent
Спасибо, Пер Хенрик, но это не имеет значения. Опять же, это работает с djcombobox, но не с xpcombobox. В мониторе браузера или консоли ничего не срабатывает.
Вы пытались разбить его на новую xpage?
Пер Хенрик - вы правы, у меня была опечатка из-за переключения между xp event = "onchange" и xe event = "onChange" Grrrr Извините, что потратил ваше время впустую, ваше решение действительно сработало.
Итак, проверка источника данных вместо использования getComponent работает? Если да, то я добавлю это как ответ, который вы можете принять
Да, пожалуйста, если вы добавите, я проверю.





Вы должны проверить источник данных вместо компонента (используя getComponent). Так что попробуйте, например: viewScope.xpcombo == "Cease"
Вместо этого попробуйте проверить источник данных. Попробуйте, например: viewScope.xpcombo == "Прекратить"