JWL JavaScript 行为

JWL JavaScript™ 行为对标记添加用于执行公共功能的事件处理程序。例如,可以对 input 标记的 onblur 处理程序添加 JWL 行为,以便在触发 onblur 事件时对该标记的值进行验证。

使用行为

调用行为时,该行为将运行一个或多个 JWL 操作以及所提供的任何 JavaScript。JWL 操作是预定义的 JavaScript 块,例如“禁用字段”、“隐藏字段”和“显示警报框”。此外,某些行为(特别是用于处理验证的行为)还可以切换与字段相关联的 CSS 类以及执行函数和操作。

JWL 行为将添加到对象的事件处理程序中,而不是替换该事件处理程序。例如,可以将 JavaScript 函数连接至对象的 onblur 处理程序,然后再将一个行为连接至该 onblur 函数。该事件触发时,将同时运行该事件处理程序和行为。以下内容描述了事件处理程序、行为以及行为所执行的操作的触发顺序。

要使用行为:
  1. 在页面中添加要应用该行为的标记。例如:
    <input id="form1:text1" type="text" value="fish" class="inputText" />
  2. 将该行为连接到 DOM 对象。例如:
    <script>
        hX_5.addBehavior("form1:text1", "onfocus", new hX_5.JSFBehaviorGeneric("action:show", "target:form1:tooltip1"));
    </script>
现在,该行为已与该对象相连接 - 触发该对象的 onfocus 事件时,将调用 JWLhavior 通用行为,这将导致 form1:tootop1 显示。

用于创建和查找行为的 hx 调用

每个行为都是使用 JavaScript 构造函数进行构造,并通过 addBehavior 调用添加到页面中。

hX_5.addBehavior("id", "eventname", new hX_5.JSFBehaviorName(attributes)); 其中

id

行为所连接至的 HTML 标记的 ID。要连接至主体标记,请使用 #body 并对文档使用 #document。

eventname

调用行为的 HTML 事件名称。例如,onclick 或 onkeydown。每个行为仅支持一些 HTML 事件名称,例如,mouseclick 行为不能与键盘事件绑定。在某些情况下,此行为需要与多个 HTML 事件绑定,此时将使用一个“伪”事件名称。例如,将 mouseclick 行为与多个事件绑定,因此事件名称是“onmouse”。

name

JSF 组件的名称。

属性

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

注: 可以将多个行为连接到一个 DOM 对象。

要获取特定的行为对象:

var o = hX_5.getBehaviorById("id", "name", "eventname"); 其中

id

行为所连接至的 HTML 标记的 ID。要连接至主体标记,请使用 #body 并对文档使用 #document。

name

JSF 组件的名称。

eventname

调用行为的 HTML 事件名称。例如,onclick 或 onkeydown。每个行为仅支持一些 HTML 事件名称,例如,mouseclick 行为不能与键盘事件绑定。在某些情况下,此行为需要与多个 HTML 事件绑定,此时将使用一个“伪”事件名称。例如,将 mouseclick 行为与多个事件绑定,因此事件名称是“onmouse”。

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

要获取所有与 DOM 对象连接的行为对象:

var a = hX_5.getBehaviorsById("id"); 其中

id

行为所连接至的 HTML 标记的 ID。要连接至主体标记,请使用 #body 并对文档使用 #document。

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

行为的常用 API 调用

更改行为的属性:

b.setAttribute("arg"); 其中

b

行为对象。

arg

JSF 属性/值字符串。

获取行为的属性:

var x = b.getAttribute("argname"); 其中

b

行为对象。

argname

包含属性的名称的字符串。

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

执行顺序

如果行为可以执行用户提供的 JavaScript 函数,则该函数将在任何 JWL 操作之前执行。如果该函数返回 false,则不会执行这些操作。同样,如果该函数返回 false,则不会应用任何 CSS 样式。操作的行为与此类似 - 如果操作返回 false,则不会执行任何其他操作。

如果除了行为以外还提供了 JavaScript 事件处理程序,例如,将脚本连接到 onblur 事件处理程序,并将行为连接到同一个 onblur 事件处理程序,则将根据事件的不同而首先执行或最后执行所提供的 JavaScript。如果 JavaScript 事件处理程序先运行并返回 false,则不会运行该行为。

表 1. 行为对象

行为

描述

JSFBehaviorGeneric 将函数/操作与任何 HTML 事件处理程序绑定。
JSFBehaviorAjaxGet 定义如何以异步方式从同一起始页面中检索内容以及进行分析。
JSFBehaviorAjaxGetExternal 定义如何以异步方式从不同于起始 URL 的 URL 中检索内容以及进行分析。
JSFBehaviorAjaxSubmit 定义如何以异步方式对起始页面提交/检索内容以及进行分析。
JSFBehaviorAssist 对 HTML 输入字段启用输入辅助(逐字符提示功能)。
JSFBehaviorFocus 当页面装入时,将初始焦点设置到该页面中的某个控件。
JSFBehaviorKeybind 将函数/操作与功能键/控件键绑定。
JSFBehaviorMouseclick 将函数/操作与鼠标右键或全部鼠标按键绑定。
JSFBehaviorTrack 启用字段/光标跟踪,以便在提交表单时,将有关焦点/光标最后所在位置的信息作为提交内容的一部分传递。
JSFBehaviorTypeahead 对输入字段添加预先输入支持。
JSFBehaviorValidate 验证 HTML input 或 select 标记值是否正确,如果不正确,则显示错误。
JSFBehaviorRowAction 仅供内部使用。对 h:dataTable 中的某一行添加行操作。
JSFBehaviorRowCategory 仅供内部使用。对 h:dataTable 中的某一行添加行类别行为。
JSFBehaviorRowEditSave 仅供内部使用。对 h:dataTable 中的可编辑行添加保存行为。
JSFBehaviorRowEditShowHide 仅供内部使用。对 h:dataTable 中的可编辑行添加显示/隐藏(编辑区域)行为。
JSFBehaviorPager 仅供内部使用。支持 h:dataTable 中的分页行为。
JSFBehaviorHS 仅供内部使用。<hx:panelActionbar> 的客户端逻辑的实现。
JSFBehaviorAlert 建议不要使用。当事件触发时,显示警报/确认对话框,改为使用 JSFBehaviorGeneric。
相关概念
JSF 窗口小部件库(JWL)

反馈