about linking two autocompleters using topics [never surrender :)] 2007-12-04 - By Jeromy Evans
Back Giovanni Azua wrote: > hi, > > I have been recently asking how to achieve that changing the value of > autocompleter A, triggers an Ajax reload of autocompleter B and make > the only item returned as selected on B i.e. displayed in its > textInputNode. > > I followed directions from: > http://struts.apache.org/2.x/docs/ajax-and-javascript-recipes.html #AjaxandJavaScriptRecipes-Linktwoautocompleters%252Cusingtopics > > > and the reload works okay but making the only element in the ComboBox > selected and displayed in autocompleter textInputNode is the remaining > issue. > > Trying to hack some javascript that will do, below is the code to the > closest I've got. > I manage that after the reload the autocompleter displays "kaki" big > deal! but not yet > to display the only item out of the ComboBox. > > Ehh please help :) > > regards, > Giovanni > Hi Giovanni,
I don't use dojo's autocompleter myself, but after a quick look at the javascript source for the widget (ComboBox) I can see there's a public method setSelectedValue(value) which may help, although it's not clear to me which component of the ComboBox is updated....The js source is pretty horrible.
My approach would be to start firebug, load your page and place a breakpoint in your callback function. When the callback is fired, use firebug's DOM inspection to browse for public methods in the widget instance returned by dojo.widget.byId() and see if there's anything useful. Use the watch to call methods directly.
Hope that helps, Jeromy Evans
> ***************************** mypage.jsp **************************** > > <script type="text/javascript"> > dojo.event.topic.subscribe("/after", function(data, type, request) > { > //data : text returned from request > //request: XMLHttpRequest object > //widget: widget that published the topic > // alert(widget.optionsListNode.childNodes.length); > // alert('happened'); > if (type == "load") > { > var widget = dojo.widget.byId("eurosPerListedUnit0"); > alert(widget.comboBoxValue.size); > widget.textInputNode.value = "kaki"; > } > // widget.textInputNode.value = widget.comboBoxValue.value; > }); </script> > > <s:url var="exchangeRates" action="AjaxGetExchangeRates.action" /> > > <s:form id="formSimulation" action="%{targetAction}" method="post" > theme="%{currentTheme}"> > <sx:autocompleter tooltip="Provide the first Historic Book" > valueNotifyTopics="/changedHistoricBook0" searchType="substring" > label="Historic Book 1" cssStyle="width: 250px;" dropdownHeight="180" > name="historicBook0" list="historicBooks" listKey="id" > listValue="name" /> ... > <sx:autocompleter id="eurosPerListedUnit0" tooltip="Provide the > Currency Rate 1" formId="formSimulation" href="%{#exchangeRates}" > listenTopics="/changedHistoricBook0" > label="Currency Rate 1" cssStyle="width: 250px;" > name="eurosPerListedUnit0" autoComplete="false" notifyTopics="/after" /> > ... > <s:submit value="%{buttonLabel}" align="center"/> > </s:form> > > -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ > To unsubscribe, e-mail: user-unsubscribe@(protected) > For additional commands, e-mail: user-help@(protected) > > > >
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To unsubscribe, e-mail: user-unsubscribe@(protected) For additional commands, e-mail: user-help@(protected)
|
|