文档手册

behavior: select

2024-07-18 16:24:43

behavior: select

<select> 列表的标准行为。原则上,它可以应用于任何 DOM 元素。

Elements

默认情况下,这些元素应用了 behavior:select:

  • <select size="2...N"></select> - 单选;

  • <select|list></select> - 单选;

  • <select|list multiple></select> - 多选;

  • <select|list multiple="checkmarks"></select> - 带有复选标记的多选选项;

  • <select|tree></select> - 分层单选;

  • <select|tree multiple="checkmarks"></select> - 带有复选标记的分层多功能选择;

Model

可以 <select> 包含 <option> 任意标记中包含的元素。

该行为将 <option>'s 具有属性 role="option" 的任何其他 DOM 元素视为可选择的实体。

所选选项将设置 :current 状态标志。

 示例,简单选择:

<select>
 <option value="#ff0000" selected>Red</option>
 <option value="#00ff00">Green</option>
 <option value="#0000ff">Blue</option>
</select>

<table> 作为选择:

<style>
 table.select > tbody { behavior:select; }
 table.select > tbody > tr:current { color:white; background:blue; }
</style>

<table.select>
 <tbody>
   <tr role="option" value="#ff0000"><td>Red</td><td>#FF0000<td></tr>
   <tr role="option" value="#00ff00"><td>Green</td><td>#00FF00<td></tr>
   <tr role="option" value="#0000ff"><td>Blue</td><td>#0000FF<td></tr>
 </tbody>
</table>

<option> s <select|tree> 中可能包含其他子 <option> s:

<select>
 <option expanded>
   <caption>Group A</caption>
   <option value="#ff0000">Red</option>
   <option value="#00ff00">Green</option>
   <option value="#0000ff">Blue</option>
 </option>
 <option>
   <caption>Group B</caption>
   ...
 </option>
</select>

Attributes

此行为可了解:

  • size=integer - 列表中可见元素的数量。注意:select 元素的高度可以被 CSS 覆盖。

  • name="name" - 标准属性名称 - 表单上输入元素的名称。

  • novalue="text" - 如果 select 最初没有 <option selected> ,它将呈现此文本。

  • as="type" - 定义 <option value="..."> 解释规则,接受:

    • as="auto" ,尝试将选项的值解析为整数、浮点数、布尔值或长度值。如果解析失败,则以字符串形式返回值。

    • as="integer" ,尝试将 option 的值解析为整数。如果解析失败,则以字符串形式返回值。

    • as="float" ,尝试将 option 的值解析为浮点数。如果解析失败,则以字符串形式返回值。

    • as="numeric" ,尝试将 option 的值解析为整数或浮点数。如果解析失败,则以字符串形式返回值。

    • as="string" ,默认值,不解析选项的值。以字符串形式返回值。

  • multiple ,选择同时支持多个选定选项。

  • multiple="checkmarks" ,Select 支持多个选定选项同时使用专用复选标记进行选项选择。

  • treelines"<select|tree> 只有分层列表绘制“树线”,以便更好地进行分组可视化。

Attributes of <option> elements inside the select:

  • value="..." - 期权的值。如果省略,则将选项的 innerText 用作值(字符串);

  • selected - 定义选项 :current 的 / :checked 状态标志的初始值。所选选项定义所选选项的初始值。

  • expanded - 定义 组 <option> 元素的 <select|tree> 初始 :expanded 状态。

Events

除了标准事件集(鼠标、键盘、焦点)之外,behavior:select 还会生成:

  • "change" 事件,当用户更改选择(单击其中一个选项)时生成。已发布事件。

  • "changing" 事件,选择即将改变。同步事件。

  • "expanded" 事件,组选项被用户展开;

  • "collapsed" 事件,组选项被用户折叠;

Properties

除了 DOM 元素的标准属性外,select 还支持:

  • options - 引用保存 <option> 列表的 DOM 元素,在本例中,这是元素本身。

  • select.currentOption - 元素,读/写,引用表示当前选项的 DOM 元素。

Methods

  • select.optionByValue(val): Element 返回 DOM 元素,该元素表示具有关联 val 值的选项。如果未找到此类选项,则返回 null。

Commands

注意:命令通过调用 element.execCommand("cmd-name"[,params])

  • "set-current" - when the command is sent to an <option> inside the select it causes the option to be current;

Value

  • 对于单选,由 as 属性确定的类型标量值,读/写。所选选项的值。如果未定义值,则选项的值是其值属性或选项的文本。

  • 对于 multy select - 所选选项的值数组。数组的元素类型由 as 属性确定。

Selection change handling in script

raw onchange handler

var sel = document.$("select#some");
sel.onchange = function() { var v = this.value; ... }

on() subscription

var sel = document.$("select#some");
sel.on("change", function() { ... event handling code ... });
document.on("change", "select#some", function() { ... event handling code ... });