suggestionbox problem in Internet Explorer
poesys Mar 26, 2010 8:00 PMI'm having a problem with a suggestionbox component having problems in Internet Explorer but working fine in Firefox. I'd appreciate any suggestions for possible issues that might cause the problem before I dive in and try to get a minimally reproducing example.
The problem: when the user starts typing, the suggestionBox appears, the user selects a row, the input text field fills in and the action happens (filling in other fields), then the suggestionBox doesn't disappear, it just hangs there and does nothing. I have other suggestion boxes in modal panels, if I bring them up they don't appear at all--the suggestionBox functionality doesn't work anymore.
On Firefox, this works as expected, no problems at all. The box disappears and the rest of the form functions as usual.
I did see another forum thread here where nested forms were the problem; that's not the issue here. There's a single form for the main page and each modalPanel has a separate form around a data table in the panel, and I've looked at the generated HTML and there's no nesting.
Here's the segment of code for the main suggestionBox:
<rich:suggestionbox
suggestionAction="#{geneSubmission.suggestLoci}"
var="l"
for="locus"
minChars="5"
eventsQueue="locusQueue"
ignoreDupResponses="true"
fetchValue="#{l.name}"
nothingLabel="No locus found"
width="100"
height="300">
<h:column>
<h:outputText value="#{l.name}" />
</h:column>
<a4j:support
event="onselect"
action="#{geneSubmission.setLocusSymbol}"
reRender="symbol, fullName">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
<f:setPropertyActionListener
value="#{l.name}"
target="#{gene.locus}" />
</a4j:support>
</rich:suggestionbox>
Here's the complete code for the form (not including the code for the modal panels which are outside this form), which includes the above component as the for="locus" component attached to the locus input text field:
<h:form>
<a4j:outputPanel id="submissionPanel">
<h:panelGrid
columns="2"
columnClasses="field,field">
<h:panelGrid columns="1">
<h:inputText
id="articleId"
required="true"
requiredMessage="Must enter article id"
value="#{geneSubmission.articleId}">
<a4j:support
event="onblur"
ajaxSingle="true"
reRender="articleMessage,submitButton">
<f:setPropertyActionListener
value="#{login.communityId}"
target="#{geneSubmission.communityId}" />
</a4j:support>
<h:outputLabel
for="articleId"
styleClass="fieldLabel">
<h:outputText value="*Article Id:" />
</h:outputLabel>
<rich:toolTip
mode="client"
value="Required: The DOI or PubMed id of the article from which you are annotating the genes."
styleClass="tooltip" />
</h:inputText>
<h:panelGroup id="articleMessage">
<h:message
for="articleId"
styleClass="errorMessage" />
</h:panelGroup>
</h:panelGrid>
<h:selectOneRadio
id="articleType"
value="#{geneSubmission.articleType}"
layout="pageDirection"
styleClass="radioLabel">
<f:selectItem
itemValue="doi"
itemLabel="Digital Object Identifier (DOI)" />
<f:selectItem
itemValue="pubmed"
itemLabel="Pubmed ID" />
</h:selectOneRadio>
</h:panelGrid>
<rich:dataTable
id="locusTable"
rows="0"
value="#{geneSubmission.genes}"
var="gene">
<rich:column>
<f:facet name="header">
<h:panelGrid
id="locusNameHeader"
rowClasses="headerLabel,exampleTableHeader,tooltip"
columns="1">
<h:outputText value="*Locus Name" />
<h:outputText value="AT2G23380" />
<rich:toolTip
mode="client"
value="Required: AGI locus name, the field will autocomplete the name after you type 5 characters" />
</h:panelGrid>
</f:facet>
<h:panelGrid
id="locusField"
columns="1"
rowClasses="field">
<h:inputText
id="locus"
value="#{gene.locus}"
required="true"
requiredMessage="Must enter locus name"
size="9">
<a4j:support
event="onblur"
ajaxSingle="true"
reRender="locusMessage,submitButton">
<f:setPropertyActionListener
value="#{login.communityId}"
target="#{geneSubmission.communityId}" />
</a4j:support>
</h:inputText>
<h:panelGroup id="locusMessage">
<h:message
for="locus"
styleClass="errorMessage" />
</h:panelGroup>
<rich:suggestionbox
suggestionAction="#{geneSubmission.suggestLoci}"
var="l"
for="locus"
minChars="5"
eventsQueue="locusQueue"
ignoreDupResponses="true"
fetchValue="#{l.name}"
nothingLabel="No locus found"
width="100"
height="300">
<h:column>
<h:outputText value="#{l.name}" />
</h:column>
<a4j:support
event="onselect"
action="#{geneSubmission.setLocusSymbol}"
reRender="symbol, fullName">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
<f:setPropertyActionListener
value="#{l.name}"
target="#{gene.locus}" />
</a4j:support>
</rich:suggestionbox>
</h:panelGrid>
</rich:column>
<rich:column>
<f:facet name="header">
<h:panelGrid
id="symbolHeader"
rowClasses="headerLabel,exampleTableHeader,tooltip"
columns="1">
<h:outputText value="Symbol" />
<h:outputText value="CLF" />
<rich:toolTip
mode="client"
value="Primary symbol for locus; enter new symbol if needed" />
</h:panelGrid>
</f:facet>
<h:panelGrid
id="symbolField"
columns="1"
rowClasses="field">
<h:inputText
value="#{gene.symbol}"
id="symbol"
size="5">
</h:inputText>
<rich:suggestionbox
suggestionAction="#{geneSubmission.suggestSymbols}"
var="s"
for="symbol"
minChars="2"
eventsQueue="symbolQueue"
ignoreDupResponses="true"
fetchValue="#{s.symbol}"
nothingLabel="No symbols found"
width="350"
height="300">
<h:column>
<f:facet name="header">Symbol</f:facet>
<h:outputText value="#{s.symbol}" />
</h:column>
<h:column>
<f:facet name="header">Full Name</f:facet>
<h:outputText value="#{s.fullName}" />
</h:column>
<a4j:support
event="onselect"
reRender="symbol, fullName">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
<f:setPropertyActionListener
value="#{s.fullName}"
target="#{gene.fullName}" />
</a4j:support>
</rich:suggestionbox>
<rich:message
for="symbol"
styleClass="errorMessage" />
</h:panelGrid>
</rich:column>
<rich:column>
<f:facet name="header">
<h:panelGrid
id="symbolFullNameHeader"
rowClasses="headerLabel,exampleTableHeader,tooltip"
columns="1">
<h:outputText value="Symbol Full Name" />
<h:outputText value="CURLY LEAF" />
<rich:toolTip
mode="client"
value="Full name of symbol; enter new full name if needed" />
</h:panelGrid>
</f:facet>
<h:panelGrid
id="fullNameField"
columns="1"
rowClasses="field">
<h:inputText
value="#{gene.fullName}"
id="fullName"
size="20"
maxlength="200">
</h:inputText>
<rich:message
for="fullName"
styleClass="errorMessage" />
</h:panelGrid>
</rich:column>
<rich:column>
<f:facet name="header">
<h:panelGrid
id="annotationsHeader"
rowClasses="headerLabel,exampleTableHeader,tooltip"
columns="1">
<h:outputText value="*Add Information" />
<h:outputText value="Click links below to add..." />
<rich:toolTip
mode="client"
value="Required: At least one annotation of this gene from the article" />
</h:panelGrid>
</f:facet>
<h:panelGrid
columns="1"
columnClasses="annotationLink">
<a4j:commandLink
value="Molecular Function#{gene.functionCount}"
id="functionLink"
onclick="#{rich:component('functionPanel')}.show()"
styleClass="annotationLink"
reRender="functionText, functionTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
<a4j:commandLink
value="Biological Process#{gene.processCount}"
id="processLink"
onclick="#{rich:component('processPanel')}.show()"
styleClass="annotationLink"
reRender="processText, processTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
<a4j:commandLink
value="Subcellular Localization#{gene.componentCount}"
id="componentLink"
onclick="#{rich:component('componentPanel')}.show()"
styleClass="annotationLink"
reRender="componentText, componentTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
<a4j:commandLink
value="Expression#{gene.expressionCount}"
id="expressionLink"
onclick="#{rich:component('expressionPanel')}.show()"
styleClass="annotationLink"
reRender="expressionText, expressionTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
<a4j:commandLink
value="Interacting Partner/s#{gene.locusCount}"
id="partnerLink"
onclick="#{rich:component('partnerPanel')}.show()"
styleClass="annotationLink"
reRender="partnerText, partnerTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
<a4j:commandLink
value="Other#{gene.otherCount}"
id="otherLink"
onclick="#{rich:component('otherPanel')}.show()"
styleClass="annotationLink"
reRender="otherText, otherTable">
<f:setPropertyActionListener
value="#{gene}"
target="#{geneSubmission.selectedGene}" />
</a4j:commandLink>
</h:panelGrid>
</rich:column>
</rich:dataTable>
<h:panelGrid columns="3">
<a4j:commandButton
id="submitButton"
value="Save to Database"
disabled="#{!geneSubmission.valid}"
reRender="submissionPanel"
oncomplete="#{rich:component('savedPanel')}.show()"
action="#{geneSubmission.submitAnnotations}">
<a4j:support event="onclick">
<f:setPropertyActionListener
value="#{login.communityId}"
target="#{geneSubmission.communityId}" />
</a4j:support>
</a4j:commandButton>
<a4j:commandButton
value="Clear Form"
immediate="true"
ajaxSingle="true"
reRender="articleId, articleType, locusTable, submitButton, functionPanel, processPanel, componentPanel, expressionPanel, partnerPanel, otherPanel"
action="#{geneSubmission.cancelAnnotations}" />
<a4j:commandButton
value="Add Another Locus"
type="button"
immediate="true"
ajaxSingle="true"
action="#{geneSubmission.addLocus}"
reRender="locusTable,submitButton" />
</h:panelGrid>
</a4j:outputPanel>
</h:form>