辅助行为

对字段启用“输入辅助”。当该字段获得焦点时,在该字段中将显示提示字符,以指示用户可以输入内容的位置。当用户输入内容时,系统将对光标进行管理,以使其始终定位在用户可以输入内容的位置。如果用户在该位置输入了无效字符,则将忽略该字符。

有关输入辅助如何作用于每种数据类型的详细信息,请参阅 JSF 辅助

对字段启用“输入辅助”。目前,输入辅助支持三种辅助:
  • 当该字段获得焦点时,在该字段中将显示提示字符,以指示用户可以输入内容的位置。当用户输入内容时,系统将对光标进行管理,以使其始终定位在用户可以输入内容的位置。如果用户在该位置输入了无效字符,则将忽略该字符。当焦点离开该字段时,会将该字段重新格式化为不带提示字符。
  • 字段填满后,焦点将转到下一个字段或者提交表单。
  • 字段获得焦点时,可以对用于输入某些亚洲语言字符的 IME(输入方法编辑器)的状态进行切换。

要启用提示功能,必须提供转换器。即,该字段必须是数字、日期/时间或掩码。转换器定义的模式/格式确定了提示功能作用于该字段的方式。JSF 辅助部分提供了有关如何处理提示字符、如何限制输入以及光标工作方式等详细信息。

可以独立于提示功能对字段打开自动跳进功能。如果启用自动跳进功能,则转换器不是必需的,尽管当字段是数字、日期/时间或字符串时建议您使用转换器。如果同时打开提示功能和自动跳进功能,则输入最后一个提示字符(最右边的字符)后,光标将前进。如果未启用提示功能,则输入最大字符数后,光标将前进。此值的计算相当复杂。如果未提供转换器,则应该指定最大字符数作为自动跳进属性值。如果未提供该值,则将检查该字段的 HTML 属性 maximum-length,并且将检查转换器(如果有的话),然后根据这两个值构造“明智的”值。对于日期/时间和数字而言,此值可以相当大。例如,对于日期/时间,将考虑可以输入的最大可能“名称”(例如,“December”);对于数字,将考虑负数符号以及最大千位分隔符数,等等。必要时,将调整字段的 HTML 属性 maximum-length 以反映计算得到的值。

与输入最大字符数时的前进不同,可以设置自动提交以修改自动跳进的行为。必须设置自动跳进,这样自动提交才有效。在这种情况下,输入最大字符数后,将提交该字段所在的表单。建议您不要使用此功能,此功能与 Section 508 不一致。此功能适用于页面使用了“过时”UI 范例的特殊情况。

如果提供了 ime-mode 属性,则它的工作方式与 IE 中的 CSS ime-mode 属性完全相同。在 IE 中并且仅限于 IE,当字段获得焦点时,会将 IME 设置为指定的状态,例如,将其启用。由于这等同于通过 CSS 对字段指定 ime-mode 属性,因此建议您不要使用此功能。

发送组件的 JSF 标记

<hx:inputHelperAssist>

基本 HTML

仅与 <input type="text"> 配合使用。

JavaScript™ 构造函数

其中

id

组件所连接至的 HTML 标记的 ID。

属性

逗号分隔的属性列表,其中每个属性都是一个加引号的字符串,此字符串包含使用冒号分隔的属性名称和值,例如,"label:MyLabel"。

受支持的事件

事件

描述

oninput

注意特殊事件名称的用法。该行为修改了所有键盘事件处理程序以及获得焦点和失去焦点处理程序。

属性

表 1. 辅助行为属性

属性名称

描述

converter

已构造的转换器的 ID。此转换器描述输入字段中值的格式。

validator

已构造的验证器的 ID。如果提供了验证器,则将使用此验证器中所描述的约束来限制用户可选取的值。

prompt-char

用作提示字符(向用户显示输入位置)的字符。空格是合法提示字符。必须注意提示字符对于模式必须是合理的,例如“.”对于数字就不是很好的提示字符。如果未提供转换器,则不使用 prompt-char。

auto-tab

如果存在,则表示可输入的最大字符数目。在输入最大字符数目后,焦点将进入下一字段。对于日期/时间字段和掩码字段,不需要输入值,这些字段的值根据模式计算而来。对于数字,值是可选的。如果未提供,则使用模式的最大大小。如果未提供转换器,则必须提供值。

auto-submit

如果对字段设置了 auto-tab,则会将 auto-tab 的行为从“进入下一字段”更改为“提交包含该字段的表单”。缺省情况下,使用表单中的第一个提交按钮来完成提交。要使用其他按钮提交,请提供此按钮的 ID 作为该属性的值。请参阅 SUBMIT 操作以获取有关 auto-submit 如何确定提交表单的方式的描述。

ime-mode

如果提供,则当字段获得焦点时,ime-mode 将设置为指定状态。仅适用于 IE。建议不要使用 ime-mode,请改用 CSS 来完成此操作。

序列

在为该事件提供的任何其他处理程序运行完成后运行。停止该事件。

API 调用

表 2. 辅助行为 API 调用

API 调用

描述

object = setAttribute(attribute)

设置属性,或如果以前已设置属性,则更改其值。

string = getAttribute(attribute-name)

检索属性的当前值。

局限性

示例代码

在输入 5 个字符后对字段启用自动跳进功能:

hX.addBehavior ("form1:text1", "oninput", new hX.JSFBehaviorAssist("auto-tab:5"));

在将 * 用作提示字符的情况下对数字字段启用提示功能和自动跳进功能:

hX.addConverter("2", new hX.NumberConverter( "pattern:US$ ###,##0.00;( US$ ###,##0.00 )"));
hX.addBehavior ("form1:text2", "oninput", new hX.JSFBehaviorAssist("converter:2", "auto-tab",
                  "prompt-char:*"));

在将空格用作提示字符的情况下对日期/时间字段启用提示功能和自动跳进功能。并且,指定字段的验证器。

hX.addConverter("3", new hX.DateTimeConverter("strict:1", "format:MM/dd/yyyy"));
hX.addValidator("C", new hX.DateTimeValidator( "required", "min-bound:20040101120000",
                  "max-bound:20041001120000"));
hX.addBehavior ("form1:text3", "oninput", new hX.JSFBehaviorAssist("validator:C",
                  "converter:3", "auto-tab", "prompt-char: "));

反馈