diff --git a/18.md b/18.md index a6ee804..632ee98 100644 --- a/18.md +++ b/18.md @@ -204,7 +204,11 @@ Access-Control-Allow-Origin: * ## 表单字段 -一个网页表单在其
标签中包含若干个输入字段。HTML允许一定数量的不同风格的输入字段,从简单的开/关选择框到下拉菜单和进行输入的字段。本书不会全面的讨论每一个输入字段类型,不过我们会先大概讲述一下。 +表单最初是为 JavaScript 之前的网页设计的,允许网站通过 HTTP 请求发送用户提交的信息。 这种设计假定与服务器的交互,总是通过导航到新页面实现。 + +但是它们的元素是 DOM 的一部分,就像页面的其他部分一样,并且表示表单字段的 DOM 元素,支持许多其他元素上不存在的属性和事件。 这些使其可以使用 JavaScript 程序检查和控制这些输入字段,以及可以执行一些操作,例如向表单添加新功能,或在 JavaScript 应用程序中使用表单和字段作为积木。 + +一个网页表单在其标签中包含若干个输入字段。HTML允许多个的不同风格的输入字段,从简单的开/关选择框到下拉菜单和进行输入的字段。本书不会全面的讨论每一个输入字段类型,不过我们会先大概讲述一下。 很多字段类型都使用标签。标签的type属性用来选择字段的种类,下面是一些常用的类型。 @@ -218,7 +222,7 @@ Access-Control-Allow-Origin: * + file:允许用户从本机选择文件上传。 -表单字段并不一定要出现在标签中。你可以把表单字段放置在一个页面的任何地方。但这样的字段不能被提交(一个完整的表单才可以),当需要和JavaScript进行响应时,我们通常也不希望按常规的方式提交表单。 +表单字段并不一定要出现在标签中。你可以把表单字段放置在一个页面的任何地方。但这样不带表单的字段不能被提交(一个完整的表单才可以),当需要和JavaScript进行响应时,我们通常也不希望按常规的方式提交表单。 ```html

(text)

@@ -230,7 +234,7 @@ Access-Control-Allow-Origin: *

(file)

``` -JavaScript对于这些不同类型的元素有一些接口。本章后面会讲述这些接口。 +这些元素的 JavaScript 接口和元素类型不同。 多行文本输入框有其自己的标签结束标签并使用标签之间的文本作为初始值,而不是使用value属性存储文本。 @@ -254,11 +258,11 @@ three 当一个表单字段中的内容更改时会触发change事件。 -## 18.2 聚焦 +## 聚焦 不同于HTML文档中的其他元素,表单字段可以获取键盘焦点。当点击或以某种方式激活时,他们会成为激活的元素,并接受键盘的输入。 -如果一个文档有文本字段,只有在该字段被聚焦时才能有文本输入进去。其他字段以不同的方式来响应键盘事件。例如,一个`菜单尝试移动到包含用户输入文本的选项,并通过向上和向下移动其选项来响应箭头键。 我们可以通过使用JavaScript的focus和blur方法来控制聚焦。第一个会聚焦到某一个DOM元素,第二个则使其失焦。在document.activeElement中的值会关联到当前聚焦的元素。 @@ -274,11 +278,7 @@ three ``` -对于一些页面,用户希望立刻使用到一个表单字段。JavaScript可以在页面载入完成时将焦点放到这些字段上,HTML提供了autofocus属性,可以实现相同的效果,并让浏览器知道我们正在尝试实现的事情。这可以让浏览器来禁用一些错误的操作,例如用户希望将焦点置于其他地方。 - -```html - -``` +对于一些页面,用户希望立刻使用到一个表单字段。JavaScript可以在页面载入完成时将焦点放到这些字段上,HTML提供了autofocus属性,可以实现相同的效果,并让浏览器知道我们正在尝试实现的事情。这向浏览器提供了选项,来禁用一些错误的操作,例如用户希望将焦点置于其他地方。 浏览器也允许用户通过TAB键来切换焦点。通过tabindex属性可以改变元素接受焦点的顺序。后面的例子会让焦点从文本输入框之间跳转到OK按钮而不是到帮助链接。 @@ -287,22 +287,22 @@ three ``` -默认情况下,多数的HTML元素不能被聚焦。但是可以通过添加tabindex属性使任何元素可以对焦。 +默认情况下,多数的HTML元素不能被聚焦。但是可以通过添加tabindex属性使任何元素可聚焦。`tabindex`为 -1 使 TAB 键跳过元素,即使它通常是可聚焦的。 -## 18.3 禁用字段 +## 禁用字段 -所有的表单字段都可以通过其disable属性来禁用,disable也作为一个元素的文档对象的属性。 +所有的表单字段都可以通过其disable属性来禁用。它是一个可以被指定为没有值的属性 - 事实上它出现在所有禁用的元素中。 ```html ``` -禁用的字段不能被聚焦或更改,不同于激活的字段,它们会变成灰色的。 +禁用的字段不能被聚焦或更改,浏览器使它们变成灰色。 当一个程序在处理一些由按键或其他控制方式出发的事件,并且这些事件可能要求和服务器的通信时,将元素禁用直到动作完成可能是一个很好的方法。按照这用方式,当用户失去耐心并且再次点击时,不会意外的重复这一动作。 -## 18.4 作为整体的表单 +## 作为整体的表单 当一个字段被包含在元素中时,其DOM元素会有一个form属性指向form的DOM元素。元素则会有一个叫作elements属性,包含一个类似于数据的集合,其中包含全部的字段。 @@ -315,7 +315,7 @@ three
``` -在JavaScript中submit事件有多种用途。我们可以编写代码来检测用户输入是否正确并且立刻做出错误信息提示,当输入值错误时中止提交表单。或者我们可以禁用正常的提交方式,正如在之前的例子中,使用自定义的程序来处理请求,使用XMLHttpRequest来将其发送到服务器且不重新载入页面。 +在JavaScript中submit事件有多种用途。我们可以编写代码来检测用户输入是否正确并且立刻提示错误信息,而不是提交表单。或者我们可以禁用正常的提交方式,正如这个例子中,让我们的程序处理输入,可能使用`fetch`将其发送到服务器而不重新加载页面。 -## 18.5 文本字段 +## 文本字段 由type属性为text或password的标签和textarea标签组成的字段有相同的接口。其DOM元素都有一个value属性,保存了为字符串格式的当前内容。将这个属性更改为另一个值将改变字段的内容。 @@ -353,13 +353,13 @@ three 和正常的值一样,这些属性也可以被更改。 -下面的例子中,有一个关于Knaseknemwy的文章但是名字拼写有一些问题,后续代码将 ``` replaceSelection函数用给定的字符串替换当前选中的文本字段内容,并将光标移动到替换内容后让用户可以继续输入。Change事件不会在每次有输入时都被调用,而是在内容在改变并失焦后触发。为了及时的响应文本字段的改变,则需要为input事件注册一个处理函数,每当用户有输入或更改时就被触发。 -下面的例子展示一个文本字段和一个展示当前输入文字长度的计数器。 +下面的例子展示一个文本字段和一个展示字段中的文字的当前长度的计数器。 ```html length: 0 ``` -## 18.6 选择框和单选框 +## 选择框和单选框 -一个选择框只是一个简单的双选切换。其值可以通过其包含一个布尔值的checked属性来获取和更改。 +一个选择框只是一个双选切换。其值可以通过其包含一个布尔值的checked属性来获取和更改。 ```html - - + ``` -