[ 
https://issues.jboss.org/browse/RF-13306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukáš Fryč reassigned RF-13306:
-------------------------------

    Assignee: Lukáš Fryč

    
> Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
> -----------------------------------------------------------------------------
>
>                 Key: RF-13306
>                 URL: https://issues.jboss.org/browse/RF-13306
>             Project: RichFaces
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.3.4
>            Reporter: alexey plotnikov
>            Assignee: Lukáš Fryč
>             Fix For: 4.3.5
>
>
> All described here https://community.jboss.org/thread/233973
> I have this autocomplete component:
> {code}
> <table>   
>    <tr>   
>       <td>   
>          <rich:autocomplete mode="ajax" 
> autocompleteMethod="#{autocomplete.autocompleteProviders}"   
>                             minChars="0" var="s" fetchValue="#{s.realName}" 
> id="provider-suggestion"   
>                             autofill="false"   
>                             
> onselectitem="autocompleteChangeProvider(event.target)" style="display: 
> inline;"   
>                             layout="table" 
> value="#{autocomplete.providerName}" >   
>             <a4j:queue requestDelay="500" ignoreDupResponses="true" />   
>             <h:column>   
>                <h:outputText style="display:none;" value="#{s.id}"/>   
>                <h:outputText style="display:none;" value="#{s.realName}"/>   
>             </h:column>   
>             <h:column>   
>                <h:outputText value="#{s.name}" escape="false"/>   
>             </h:column>   
>          </rich:autocomplete>   
>       </td>   
>       <td>   
>          <h:graphicImage value="/img/arrow.png" 
> onclick="#{rich:component('provider-suggestion')}.setValue('');#{rich:component('provider-suggestion')}.showPopup();stopEvent(event);"
>    
>                          alt=""/>   
>          <h:graphicImage value="/img/cancel.png"   
>                          
> onclick="#{rich:component('provider-suggestion')}.hidePopup();#{rich:component('provider-suggestion')}.setValue('');autocompleteChangeProvider(null);"
>    
>                          alt="#{messages['pages.clear']}" 
> title="#{messages['pages.clear']}"/>   
>          <h:inputHidden id="filter-provider-id" 
> value="#{autocomplete.providerId}"/>   
>       </td>   
>    </tr>   
> </table>
> {code}
> as you can see, i don't use showButton="true", because i need another 
> functionality, i need erase input text before show popup window.
> I use JavaScript function "autocompleteChangeProvider" for extract selected 
> id.
> I use separate button(/img/cancel.png) for erase input text, as you can see 
> this function just use Richfaces API.
>  
> And a problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and 
> user clicks on show button(/img/arrow.png) than input text not erasing, but i 
> called #{rich:component('provider-suggestion')}.setValue('') !!!
>  
> I think i found a solution
> AutocompleteBase.js has this code:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {  
>         // call constructor of parent class  
>         $super.constructor.call(this, componentId);  
>         this.selectId = selectId;  
>         this.fieldId = fieldId;  
>         this.options = $.extend({}, defaultOptions, options);  
>         this.namespace = this.namespace || "." + 
> rf.Event.createNamespace(this.name, this.selectId);  
>         this.currentValue = "";  
>         this.tempValue = this.getValue();  
>         this.isChanged = this.tempValue.length != 0;  
>         bindEventHandlers.call(this);  
>     };
> {code}
> as you can see this.currentValue = "" so JS thinks that this.currentValue="" 
> so currentValue equal new value("" - empty string), so nothing happens.
> i replace this code by this:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {  
>         // call constructor of parent class  
>         $super.constructor.call(this, componentId);  
>         this.selectId = selectId;  
>         this.fieldId = fieldId;  
>         this.options = $.extend({}, defaultOptions, options);  
>         this.namespace = this.namespace || "." + 
> rf.Event.createNamespace(this.name, this.selectId);  
>         this.currentValue = $(rf.getDomElement(fieldId)).val();  
>         this.tempValue = this.getValue();  
>         this.isChanged = this.tempValue.length != 0;  
>         bindEventHandlers.call(this);  
>     };
> {code}
> and it works!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to