Heim Web-Frontend js-Tutorial JavaScript DOM 学习第五章 表单简介_基础知识

JavaScript DOM 学习第五章 表单简介_基础知识

May 16, 2016 pm 06:34 PM
dom javascript

因为每一个表单的检测项都不同,所以我也不能给你一个万能的代码。你需要用我在这一章介绍的这些元素构建自己的检测函数。我在后面一张还有一个例子,你也可以参考。

在这一章我会首先讨论一下用JavaScript来检测表单的局限性,然后会解释一下提交时间处理程序,然后是表单本身的一些方法和属性。最后就是如何访问表单元素。

这里还有一篇Jeff Howden的介绍表单的使用错误和解决办法。Forms & JavaScript Living Together in Harmony
局限性
首先,你需要了解当用户提交了表单之后JavaScript的检测代码会做什么:
1、JavaScript检测表单时可能会像下面这样。如果代码发现了一个错误,那么提交就会暂停,然后给用户一个警告让他输入正确的数据。
2、如果没有什么错误或者JavaScript是关闭的那么表单内容就发送到服务器端。
3、如果服务器端的脚本发现了错误,就会返回一些错误信息。在这种情形下,用户需要返回表单然后重新填写数据再次提交。
4、如果没有错误发生,那么服务器端完成必要的工作并显示感谢信息。
就像你所看到的,数据在提交过程中会检测两次:一次是JavaScript一次是服务端。服务端检测总是可行的,而且是可靠的。JavaScript的检测只有在用户开启JavaScript功能的时候才有用,那么既然服务端总是可靠有效,并且与用户使用的浏览器无关,那么为什么还需要JavaScript检测呢?
JavaScript检测是服务器端检测的一个有效补充,因为他能在数据发往服务器端的时候先检测一遍。这样用户就不用使用后退按钮回去修改表单内容,那样会很麻烦,而且在寻找填错的内容也是一件相当麻烦的事情。所以JavaScript检测比服务器端检测对用户的使用体验帮助更大。
所以JavaScript不是一个完全的检测机制,但是作为服务器端的补充和对用户的友好性来讲还是一个不错选择。所以我建议使用这两种检测机制,既满足了用户的使用体验要求又保证了程序的安全性。
onsubmit
当你使用JavaScript来检测表单的时候,第一个事情就是创建onsubmit的事件处理程序。这个程序会在用户提交表单的时候运行。这个程序会检测某些字段是否有值填写,那些复选框是否选择了至少一个,或者其他的你需要检测内容。
代码如下:

复制代码 代码如下:



checkscript()就是这个程序的名字。这段代码需要返回true或者false。如果返回的是false,那么表单就不会被提交,不论返回true还是false代码都会停止运行。
所以生成的代码如下:
复制代码 代码如下:

function checkscript() {
    if (some value is/is not something) {
        // something is wrong
        alert('alert user of problem');
        return false;
    }
    else if (another value is/is not something) {
        // something else is wrong
        alert('alert user of problem');
        return false;
    }
    // If the script makes it to here, everything is OK,
    // so you can submit the form
    return true;
}

当然这段代码可以写的很复杂,如果你需要检测很多表单项目或者一大堆的单选框。基本思想就是这样了:你遍历表单里的每一个需要检查的元素,如果发现了错误就返回false,然后代码停止运行,表单也不会被提交。
当你发现了错误的时候,你应该提醒用户。可以用一个警告框,不过今天大多数的办法是生成一条错误信息然后添加在错误条目的后面。
只有在最后地方,你检查过了所有的元素并且没有发现错误,那么你就返回true,表单就会被提交。
表单的方法和属性
JavaScript对于处理表单还有一些内建的方法和属性。其中三个比较重要:
你可以用submit()方法来提交表单。提交页面的第一个表单你可以写:
复制代码 代码如下:
document.forms[0].submit()
注意当用户使用JavaScript提交表单的时候,表单的事件处理程序就不起作用了。
重置表单,你可以:
[code] document.forms[0].reset()
我假设,没有做测试,你如果使用这个方法,那么重置表单的事件处理程序也就不会执行。
最后你可以修改表单的ACTION项:
[code] document.forms[0].action = 'the_other_script.pl';
如果表单在某些情况需要提交给其他页面的时候这个方法就相当方便。
访问表单元素
表单的有效性检测需要访问到表单的元素才能知道用户填了什么内容进去。所以首先我们需要根据Level 0 DOM来访问表单。一般这样写:
[code] document.forms[number].elements[number]
当页面加载之后,JavaScript就会生成一个forms数组用来存储页面上所有的表单。所以第一个表单就是forms[0],第二个就是forms[1]等等。
JavaScript把表单里面的每个元素也存储进了一个数组。第一个元素就是elements[0],第二个就是elements[1]。所有的input,select,textarea都是一个元素。
有些时候,最好还是使用表单和元素的name比较好。在HTML中,你需要给每个元素命名,比如:
[code]
2 3 4 5

现在你就可以通过下面的方法来访问元素:
[code] document.personal.name 2 document.personal.address 3 document.personal.city
使用name的好处就在于你能把页面的所有元素顺序打乱的时候代码依然能够运行,如果用数组就不行。比如上面例子中的city的输入框是document.forms[0].elements[2],但是当你把他放在第一个的时候就变成了document.forms[0].element[0],这时候你就得改代码了。
值的检测
当然,最重要的事情还是找出用户填进去的值或者选择了的复选框。有些时候你还想填一些其他信息在表单里。
下面的这些小段的代码能够帮助你访问到表单里的元素。所有的都是把用户输入保存在user_input变量中。之后,你就可以检测有效性了。
Texts,textarea和隐藏的字段
非常简单:
[code] user_input = document.forms[0].text.value

其中text就是文本框或者textarea或者隐藏字段的name。value属性就会给出这些元素的文本,然后存储在user_input里。
直接写也可以:
复制代码 代码如下:
document.forms[0].text.value = 'The new value';

Select Boxes
这也很简单:
复制代码 代码如下:
user_input = document.forms[0].select.value;

要更改他的选择项目,就必须修改selectedIndex,比如:
复制代码 代码如下:
document.forms[0].select.selectedIndex = 2;

现在第三个选项就被选择了。
旧的浏览器
在旧的浏览器里面select boxes没有value属性,那么:
复制代码 代码如下:

var selectBox = document.forms[0].select;
user_input = selectBox.options[selectBox.selectedIndex].value

首先找出用户选择了的项目。document.forms[0].select.selectedIndex给出了选择项目的编号。JavaScript已经创建了一个包含所有select boxes选项的options数组。所以通过这个数组就能知道用户选择了什么,然后存储在user_input里面。
checkboxes
checkboxes有一些小小的不同。我们已经知道了他的值,但是需要知道用户是否选择了他。checked属性可以告诉我们。他有true和false两个值。
那么:
复制代码 代码如下:

if (document.forms[0].checkbox.checked) {
user_input = document.forms[0].checkbox.name
}

checkbox是复选框的名字。如果复选框被选择了,我们就得到名字(你也可以选择得到值)然后传递给user_input。
选择一个复选框可以:
复制代码 代码如下:
document.forms[0].checkbox.checked = true

单选框
不幸的是,你不能一下子就找到哪个单选框被选中了。只能在遍历之后查找checked属性为true的那一项。
复制代码 代码如下:

for (i=0;iif (document.forms[0].radios[i].checked) {
user_input = document.forms[0].radios[i].value;
}
}

radios就是这一组单选框的名字。
注意document.forms[0].radios是包含所有单选框的数组,循环检测是否checked的属性为true。如果是则传递个user_input。
document.forms[0].radios.length返回所有单选框的数目。
如果选择一个单选框,我们可以设置它的checked的值为true:
复制代码 代码如下:
document.forms[0].radios[i].checked = true;

翻译地址:http://www.quirksmode.org/js/forms.html
转载请保留以下信息
作者:北玉(tw:@rehawk)
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems Dec 17, 2023 am 08:41 AM

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann

See all articles