摘要:文本框腳本有兩種方式表現文本框的單行文本框和的多行文本框。對于單行文本框,通過特性可以指定文本框能夠顯示的字符數,通過特性訪問其內容,而則用于指定其可以接受的最大字符數。
title: 表單腳本
date: 2016-12-19 15:17
tags: JavaScript
在 HTML 中,表單由 元素來表示,但是在 JavaScript 中,表單對應的是 HTMLFormElement 類型,它具有的一些獨有的屬性和方法。
action: 接收請求的 URL
elements: form 中所有控件的集合
length: form 中控件的數量
method: 要發送的 HTTP 請求類型
name: 表單的名稱
reset(): 重置 form 域為默認值
submit(): 提交 form
target: 用于發送請求和接收響應的窗口的名稱
acceptCharset: 服務器能夠處理的字符集
enctype: 請求的編碼類型。
查找表單// 通過 ID 查找 var form = document.querySelector("#form1"); // 通過 document.forms 集合查找 var firstForm = document.forms[0] // 索引查找 var myForm = document.forms["form2"] // 取得 name 為 form2 的表單提交表單
// 通用提交表單 // 自定義提交表單 // 圖像按鈕阻止表單提交的默認行為
var form = document.querySelector("#myForm") EventUtil.addHandler(form, "submit", function(event){ // 取得事件對象 event = EventUtil.getEvent(event) var target = EventUntil.getTarget(event) // 阻止默認事件 EventUtil.preventDefault(event); // 取得提交按鈕 var btn = target.elements["submit-btn"] // 驗證表單 // do something // 禁用提交按鈕 btn.disabled = true })
為避免用戶重復提交,應該在第一次提交表單以后就禁用提交按鈕,或者利用 onsubmit 事件處理程序取消后續的表單提交操作
如上,要在第一次點擊后就禁止提交,只需要監聽 submit 事件,并在該事件發生時禁用提交表單按鈕即可。
表單字段通過 form 的 elements 屬性可以獲得所有表單字段,然后可以安裝索引或者 name 特性來訪問它們。
如果多個表單控件都使用一個 name ,那么會放回一改 name 命名的一個 NodeList 集合
共有的表單字段屬性:
disabled: 布爾值,表示當前字段是否被禁用
form: 指向所屬的 form
name: 當前字段的名稱
type: 當前字段的類型
除了 之外,所有的表單都有 type 屬性,對于 元素,
該值等于 HTML 的 type 值。
對于
:type 屬性值 select-one
:type 屬性值 select-multiple
每個表單字段都有兩個方法:focus() 和 blur() 方法。
此外,所有表單字段都支持下列 3 個事件:
blur: 字段失去焦點時 觸發
focus: 字段獲得焦點時觸發
change: 對于 和 元素,在它們失去焦點且 value 值改變時觸發;對于 元素,在其選項改變時觸發。
0x01 文本框腳本有兩種方式表現文本框: 的單行文本框和
對于單行文本框,通過 size 特性可以指定文本框能夠顯示的字符數,通過 value 特性訪問其內容,而maxlength則用于指定其可以接受的最大字符數。
相對于 要指定文本框的大小可以使用 rows 和 cols 特性。
選擇文本和 都支持 select() 方法用于選中所有文本,而與此對應的是 select 事件。
select事件在選中文本的時候就會觸發
var textbox = form.elements["textbox"] textbox.onselect = function(){ alert(textbox.value) }
但是通過 select 事件只能確定用戶何時選擇了文本,卻不知道用戶到底選擇了哪些文本,基于此 HTML5 添加了 selectionStart 和 selectionEnd 方法。
要取得用戶在文本框中選取的文本,可以使用如下方法:
textbox.onselect = function(){ alert(textbox.value.substring(textbox.selectionStart, textbox.selectionEnd)) }HTML5 約束驗證 API
任何標注有 required 的字段,在提交表單時都不能空著。
該屬性適用于 ,, 字段。
選擇框通過 元素和 元素創建,它們同屬于 HTMLSelectElement 類型,為了方便交互,該類型提供了如下屬性:
add(newOption, relOption): 插入新的 元素,在相關項之前
multiple: 布爾值,是否允許多項選擇
options: 所有的 元素集合
remove(index): 移除給定位置的索引項
選擇框 的 type 屬性值不是 select-one 即是 select-muitiple
為了便于訪問數據,每個 元素都有一個 HTMLOptionElement 對象,該對象具有如下屬性:
index: 當前選擇項在 options 集合中的索引
selected: 布爾值,表示當前選項是否被選中
select: 選項的文本
value: 選項的值
選擇項元素的值,就是選中的 元素的 value 特性值。如果沒有 value 特性,則是 元素的文本值
對于只能選擇一項的選擇框,最簡單的方式就是使用 selectedIndex 屬性:
var selectedOption = selectbox.options[selectbox.selectedIndex]
而對于可以選擇多項的選擇框,我們需要循環遍歷選擇集合,然后測試每個選擇項的 seleted 屬性
function getSelectedOption(selectBox){ var result = new Array() var option = null for(let i=0,len = selectBox.options.length;i < len;i++){ option = selectBox.options[i] if(option.selected){ result.push(option) } } return result } var selectBox = document.querySelector("#selectBox") var selectedOptions = getSelectedOption(selectBox) // 獲得所有被選中的項0x03 表單序列化
在表單對服務器發送數據之前,需要將表單中的有效數據進行格式化的編碼,即表單序列化。
下面的 serialize 函數可以實現表單的序列化操作:
function serialize(form){ let parts = [],field = null, i, len, j, optLen, option, optValue; for(i =0, len = form.elements.length; i在整個表單序列化的過程中,稍微復雜一點的就是 元素了,它能是單選框或者多選框,那么我們需要去遍歷控件中的每一項。當不存在 value 特性時,使用 text 的值,我們使用了 hasAttribute() ,而在 IE 中需要使用 specified 特性。
對于單選按鈕和復選按鈕,需要檢查其 checked 屬性書否為 false,是則退出 switch 循環。若為 true 則將其鍵值對進行編碼,推到 parts 數組。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86568.html
摘要:處理表格和提交等等重置表單重置表單應該使用或當用戶單擊重置按鈕重置表單時,會觸發事件,可以在必要的時候取消重置操作另外也可以通過腳本調用方法重置表單,在調用方法重置表單時會觸發事件。在中,表單中新增加了屬性,自動把焦點移動到相應字段。 HTMLFormElement繼承了HTMLElement,它自己獨有的屬性和方法有: acceptCharset:服務器能夠處理的字符集,等價于HT...
摘要:表單如果表單內沒有按鈕,只有元素,那么這個可以升級為按鈕。輸入框選中高亮,輸入非數字,改變顏色可設置,不能設置而則可以,但不能設置最大字符數。 form 表單 如果form表單內沒有submit按鈕,只有button元素,那么這個button可以升級為submit按鈕。 form 表單用來向服務器提交信息,常用屬性 action:提交表單的地址 name:頁面中可能不止一個表單,...
摘要:文本框獲得焦點時,選中其中所有的文本思路利用焦點事件事件,在文本框獲得焦點時,利用其方法選中所有文本。自動切換焦點思路利用事件檢測用戶輸入新字符后,文本框內的字符串是否已經達到最大長度,若達到最大長度,則將焦點切換至下一個文本框。 JavaScript 表單腳本 通過 document.forms 可以獲得一個包含當前頁面中所有表單的集合 HTMLFormElement 接口 下面是這...
摘要:瀏覽器如何將數據發送給服務器對表單字段的名稱和值進行編碼,使用和號分隔不發送禁用的表單字段只發送勾選的復選框和單選按鈕不發送為和的按鈕多選框中每個選中的值單獨一個條目在單擊提交按鈕提交表單的情況下,也會發送提交按鈕。否則不發送提交按鈕。 瀏覽器如何將數據發送給服務器: 對表單字段的名稱和值進行URL編碼,使用和號(&)分隔 不發送禁用的表單字段 只發送勾選的復選框和單選按鈕 不發送t...
閱讀 2905·2021-11-24 09:39
閱讀 1163·2021-11-02 14:38
閱讀 4156·2021-09-10 11:26
閱讀 2748·2021-08-25 09:40
閱讀 2310·2019-08-30 15:54
閱讀 482·2019-08-30 10:56
閱讀 2744·2019-08-26 12:14
閱讀 3216·2019-08-26 12:13