1

我正在尝试为工作编号字段提供预先输入功能。该字段的模式是 8 后跟尽可能多的零,以使他们键入的字符串总共有 10 位数字。换言之,8000001234 或 8001234567。在这些示例中,用户只想键入 1234 或 1234567,并让预输入返回相应的文档。这可能吗?

4

3 回答 3

4

这可以通过使用xp:typeAhead 中的参数valueMarkup来完成。在建议响应中,您将希望添加的值添加到display:none部分的字段中,类非正式的跨度是建议列表中显示的部分。您可以使用 HTML 代码修改/设计非正式部分(包括多行信息、添加图像等)

这是一个简单的例子:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:inputText id="inputText1" value="#{requestScope.TypeAhead}">
        <xp:typeAhead mode="partial" minChars="1" 
            var="searchValue" valueMarkup="true">
                <xp:this.valueList>
                    <![CDATA[#{javascript:
                        var directoryTypeahead = function (searchValue:string) {

                        /*** generate your matches ***/
                        var matches = {};
                        for( var i=10;i<20;i++){
                            matches[i] = { display: "80000" + i };        
                        }

                        /*** return typeahead data ***/
                        var returnList = "<ul>";
                        for (var matchEntry in matches) {
                            var match = matches[matchEntry];
                            var matchDetails:string = [
                                "<li><div style=\"display:none;\">",
                                matchEntry,
                                "</div><span class=\"informal\"><strong>",
                                match.display,
                                "</span></li>"
                            ].join("");
                            returnList += matchDetails;
                        }
                        returnList += "</ul>";
                        return returnList;
                    }
                    directoryTypeahead(searchValue)
               }]]>
           </xp:this.valueList>
    </xp:typeAhead>
</xp:inputText>

您必须更改生成匹配项之间的部分以满足您的要求。

于 2012-07-02T06:05:53.843 回答
2

Roy - 另一个选择是滚动你自己的 typeAhead 而不使用开箱即用的版本

http://xomino.com/2012/05/01/jquery-in-xpages-8-tokeninput-autocomplete/

使用令牌自动完成,您可以控制搜索输入和显示输出 - 这样您可以显示整个 80000123 字符串,并且 123 将突出显示为用户输入的文本。

于 2012-07-02T11:41:11.440 回答
-1

可能是部分答案 - 但不久前我偶然发现了 Rasmus Bauck 的一篇博客文章,该文章解释了一种使用您自己的代码处理预先输入调用的技术。

我没有去尝试它,但我看到了你的问题,它唤起了我的记忆。

http://devxpages.blogspot.com.au/2010/04/extending-xpages-type-ahead.html

希望能帮助到你,

布伦丹

于 2012-07-02T04:51:39.817 回答