[译] 我在阅读 MDN 时发现的 3 个 Input 元素属性

栏目: JavaScript · 发布时间: 7年前

内容简介:我最近在 Twitter 偶然发现了Dan Abramov 的推文。他分享的一段简短的代码引起了我注意的。这段代码使用 JavaScript 访问 DOM(我立即打开 MDN 阅读更多关于那么我们开始吧!

我最近在 Twitter 偶然发现了Dan Abramov 的推文。他分享的一段简短的代码引起了我注意的。这段代码使用 JavaScript 访问 DOM( Document Object Model )中的 input 元素,并读取或更改了它的一些属性,其中令我惊叹的是 defaultValue 属性。

我立即打开 MDN 阅读更多关于 HTTMLInputElementdefaultValue 属性,并偶然发现了一些我不知道的属性,这便是我写这篇短文的原因。

那么我们开始吧!

defaultValue

这是 Dan 推文中的示例 — HTML 代码中有一个 input 元素,该元素具有 value 属性(attribute)(attribute 在 HTML 代码中定义,而 property 属于 JavaScript 对象)。

<input type="text" value="Hello world">
复制代码

现在可以查找到这个元素并做一些处理。

const input = document.querySelector('input');

console.log(input.value);        // 'Hello world'

input.value = 'New value';

console.log(input.value);        // 'New value'
console.log(input.defaultValue); // 'Hello world'
复制代码

如你所见,属性 value 中定义的值最初反映在元素属性 value 中,这没什么特别,但当你改变 value 时,仍然可以使用 defaultValue 访问“初始值”( defaultChecked 在复选框也可用),这就很酷了!

defaultValue 在MDN 的定义如下:

[它]返回 / 设置在创建此对象的 HTML 中最初指定的默认值。

你可以在CodePen 测试这段代码。

indeterminate

indeterminate 属性是一个迷人的属性。你可曾知道复选框具有已选和未选之外的其他可视状态? indeterminate 是一个 property(没有对应的 attribute),你有时候可能会看到带着一个小破折号的复选框,使用这个属性便能做到。

const input = document.querySelector('input');
input.indeterminate = true;
复制代码
[译] 我在阅读 MDN 时发现的 3 个 Input 元素属性

indeterminate 设置为 true 对复选框的值没有任何影响,我想到的唯一应用场景是 Chris Coyier 在 CSSTricks 提到的 嵌套复选框。

indeterminate 不仅适用于复选框,还可以用于单选按钮和进度元素。假设有一组单选按钮,没有一个按钮被选择。在你未作出选择前,它们都没有被选中同时也都没有不被选中,这时它们就处于 indeterminate 状态。

还有一种玩法,你可以对被选定元素使用 CSS 伪类 :indeterminate ,这样可以在单选按钮组未被选择时方便展示一些特殊的 UI 组件。

[译] 我在阅读 MDN 时发现的 3 个 Input 元素属性
.msg {
  display: none;
}

input:indeterminate ~ .msg {
  display: block;
}
复制代码

有关 indeterminate 属性的有趣之处在于你可以将它设置为 truefalse ,这将影响复选框的伪类,但不会影响单选按钮。 对于单选按钮,按钮组的实际选择状态始终是正确的

顺道提一下,progress 元素 在未定义 value 属性时也将匹配 :indeterminate 选择器。

indeterminate 在MDN 的定义如下:

[它]表示复选框或单选按钮没有值且处于不确定的状态。复选框的外观会变成第三个状态,但这不影响 checked 属性的值,单击复选框会将值设置为 false。

你可以在CodePen 测试这段代码。

selectionStartselectionEndselectionDirection

这三个属性可以确定用户选择的内容,并且使用起来非常简单。如果用户在输入字段中选择文本,则可以使用这三个属性计算所选内容。

[译] 我在阅读 MDN 时发现的 3 个 Input 元素属性
const input = document.querySelector('input');

setInterval( _ => {
  console.log(
    input.selectionStart,
    input.selectionEnd,
    input.selectionDirection;
  ); // e.g. 2, 5, "forward"
}, 1000)
复制代码

这段测试代码的作用是每秒记录一次选择值。 selectionStartselectionEnd 返回描述我选择位置的索引,但是当你使用鼠标或触控板选择时 selectionDirection 返回的是 none ,而使用 SHIFT 和箭头选择文本时会返回 forwardbackward

你可以在CodePen 测试这段代码。

以上是这次分享的全部内容。 :)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机程序设计艺术(第1卷)

计算机程序设计艺术(第1卷)

[美] Donald E. Knuth / 清华大学出版社 / 2002-9 / 80.00元

第1卷首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。一起来看看 《计算机程序设计艺术(第1卷)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具