Autocomplete XPages提前键入自动完成行为

Autocomplete XPages提前键入自动完成行为,autocomplete,xpages,xpages-extlib,Autocomplete,Xpages,Xpages Extlib,在XPages移动控件中,我遇到了Typeahead问题。事实上,我认为这种行为最近发生了变化——可能是因为Ext.Library的最后一次更新,但我不确定。就在那时,我们顺便注意到了变化。他一直在按预期工作 下面是两个截图。第一个在普通XPage上,第二个在移动控件内 请注意,用户如何开始在第一个字段中键入“D”,而没有“自动完成”。但在第二个屏幕截图中,用户输入了一个“D”,并立即在第一个值中添加了一个“O”,在本例中,该值以“O”开头。它替换了用户键入的“D”。 (显示以“O”开头的记录是

在XPages移动控件中,我遇到了Typeahead问题。事实上,我认为这种行为最近发生了变化——可能是因为Ext.Library的最后一次更新,但我不确定。就在那时,我们顺便注意到了变化。他一直在按预期工作

下面是两个截图。第一个在普通XPage上,第二个在移动控件内

请注意,用户如何开始在第一个字段中键入“D”,而没有“自动完成”。但在第二个屏幕截图中,用户输入了一个“D”,并立即在第一个值中添加了一个“O”,在本例中,该值以“O”开头。它替换了用户键入的“D”。 (显示以“O”开头的记录是按设计工作的,因此忽略此事实。)

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

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

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

如何使字段不在移动控件内部自动填充

如有任何建议,将不胜感激。我应该注意到,这将私下用于iPad。这就是移动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>

以下是来自移动控件页面的输出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="">

我注意到添加到mobile中的dojoType-dojoType=“extlib.dijit.mobile.TypeAheadCombo”。这听起来像是一个组合框和typeahead的混合体,这解释了您看到的功能


如果您将Dojo属性添加到非移动属性中,它会起作用吗?

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

最近的Ext.Library更新中有一个关于提前输入的更改。目前的解决方案是使用dojo添加一个设置。这是IBM发给我的电子邮件

你好,大卫, 在版本901v00_04.20140226-1506中,移动式超前行为发生了变化 有关更改的详细信息,请参阅该版本的readme.pdf中的“对XPages TypeAhead控件支持的改进”一节

我正在复制你所说的行为,我记录了一个SPR: SPR#MKEE9L7E9BLink XPages,Mobile TypeAhead,下拉列表中的第一项正在插入编辑框(不应)

要解决此问题,请执行以下操作: 解决方法是编写一个脚本来更改编辑框行为, 因此,将此控件插入XPage,并更改名称InputExt1以匹配编辑框的名称:

<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

每种浏览器输出的HTML是什么?有什么不同吗?移动设备可能正在呈现不同的html。我已经将html结果添加到问题中。它显示“自动完成”和“自动更正”处于“关闭”状态。当我将其添加到非移动工作页面时,我无法显示任何结果。这里什么都没有。我想可能还需要包括一个Dojo模块