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