XPage Typeahead自动完成行为

时间:2014-06-17 14:12:41

标签: autocomplete xpages xpages-extlib

在XPages Mobile控件中我遇到了Typeahead问题。实际上我认为最近的行为发生了变化 - 可能是Ext的最后一次更新。图书馆,但我不确定。那是我们注意到这种变化的方式。一直按照需要工作。

以下是2个截图。第一个是正常的XPage,第二个是Mobile Controls。

注意用户如何开始在第一个中输入“D”而没有“自动完成”。但是在第二个屏幕截图中,用户键入了一个“D”,它立即添加到第一个值中,在这种情况下以“O”开头。它取代了用户输入的“D”。 (显示“O”开头的记录正在按设计工作,所以请忽略它。)

问题是我不希望发生自动完成。我希望移动控件中的第一个屏幕截图的行为。所以用户可以继续输入,它将继续过滤列表而不会覆盖用户输入的内容。

我很确定它曾经这样做,我不知道发生了什么变化。代码本身没有改变 - 我知道。

我试图将自动完成和自动更正设置为“关闭”而没有任何运气。我不确定它们的区别是什么,或者它们是否真正发挥作用。

如何让字段不自动填充Mobile Controls?

任何建议都将不胜感激。我应该注意到这是私下将在iPad上使用。所以它是Mobile Safari浏览器。

谢谢!

以下是此基本代码:

<xp:inputText id="inputJobCode" value="#{viewScope.selectedJob}"
                    styleClass="target span9">
<xp:this.attrs>
    <xp:attr name="placeholder" value="Job Code" />
    <xp:attr name="autocorrect" value="off" />
    <xp:attr name="autocomplete" value="off" />
</xp:this.attrs>
<xp:this.dojoAttributes>
    <xp:dojoAttribute name="autocorrect" value="off" />
    <xp:dojoAttribute name="autocomplete" value="off" />
</xp:this.dojoAttributes>
<xp:typeAhead mode="partial" minChars="1" valueMarkup="true"
    var="searchValue" valueList="#{javascript:return com.companyname.datahub.TypeAhead.jobTypeAhead(searchValue);}">
</xp:typeAhead>
<xp:eventHandler event="onchange" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var key:String = viewScope.get("selectedJob");
getComponent("inputJobCode").setValue("");
//JobData.load(key);
}]]></xp:this.action>
    </xp:eventHandler>
</xp:inputText>

Preferred Behavior

Not Preferred

以下是移动控制页面输出HTML的内容:

<input type="text" id="view:_id1:checkOutFacilityID_content:_id4:inputText5"
 name="view:_id1:checkOutFacilityID_content:_id4:inputText5" autocomplete="off" 
    class="mblTextBox target" placeholder="Job Code" autocorrect="off"
dojotype="extlib.dijit.mobile.TypeAheadCombo" 
store="view__id1_checkOutFacilityID_content__id4__id9" data-dojo-
props="list:'view__id1_checkOutFacilityID_content__id4__id9', searchAttr:'value', 
labelAttr:'label', labelType:'html'" spellcheck="false" tabindex="0" lang="en" 
widgetid="view:_id1:checkOutFacilityID_content:_id4:inputText5" value="">

2 个答案:

答案 0 :(得分:1)

我从IBM的Maire那里得到了答案。

最近的Ext发生了变化。关于Type Ahead的库更新。现在的解决方案是使用dojo添加设置。这是IBM发给我的电子邮件。

大卫,大卫, 版本901v00_04.20140226-1506中的移动类型提前行为已更改 有关更改的详细信息,请参阅&#34; XPage TypeAhead控件支持的改进&#34;在该版本的readme.pdf中。

我正在重现您正在谈论的行为,并且我已经记录了SPR: SPR#MKEE9L7E9BLink XPages,Mobile TypeAhead,下拉列表中的第一项被插入编辑框(不应该)

解决此问题: 解决方法是编写一个更改编辑框行为的脚本, 所以将此控件插入XPage,并更改名称inputText1以匹配您的编辑框的名称:

<xp:panel id="panel1"> 
      <xp:eventHandler event="onClientLoad" submit="false"> 
              <xp:this.script><![CDATA[dijit.byId('#{id:inputText1}').autoComplete=false;/*Note autoComplete=false is different to autocomplete=off*/ ]]></xp:this.script> 
      </xp:eventHandler> 
</xp:panel> 

此致      Maire的

答案 1 :(得分:0)

我注意到添加到mobile的dojoType - dojotype =&#34; extlib.dijit.mobile.TypeAheadCombo&#34;。这听起来像是组合框和先行者的混合,这解释了你所看到的功能。

如果将Dojo属性添加到非移动属性,它是否有效?