<input>
元素主要用于表單組件,它繼承了 HTMLInputElement 接口。
HTMLInputElement 的實例屬性
特征屬性
name
:字符串,表示<input>
節(jié)點的名稱。該屬性可讀寫。type
:字符串,表示<input>
節(jié)點的類型。該屬性可讀寫。disabled
:布爾值,表示<input>
節(jié)點是否禁止使用。一旦被禁止使用,表單提交時不會包含該<input>
節(jié)點。該屬性可讀寫。autofocus
:布爾值,表示頁面加載時,該元素是否會自動獲得焦點。該屬性可讀寫。required
:布爾值,表示表單提交時,該<input>
元素是否必填。該屬性可讀寫。value
:字符串,表示該<input>
節(jié)點的值。該屬性可讀寫。validity
:返回一個ValidityState
對象,表示<input>
節(jié)點的校驗狀態(tài)。該屬性只讀。validationMessage
:字符串,表示該<input>
節(jié)點的校驗失敗時,用戶看到的報錯信息。如果該節(jié)點不需要校驗,或者通過校驗,該屬性為空字符串。該屬性只讀。willValidate
:布爾值,表示表單提交時,該<input>
元素是否會被校驗。該屬性只讀。
表單相關(guān)屬性
form
:返回<input>
元素所在的表單(<form>
)節(jié)點。該屬性只讀。formAction
:字符串,表示表單提交時的服務(wù)器目標(biāo)。該屬性可讀寫,一旦設(shè)置了這個屬性,會覆蓋表單元素的action
屬性。formEncType
:字符串,表示表單提交時數(shù)據(jù)的編碼方式。該屬性可讀寫,一旦設(shè)置了這個屬性,會覆蓋表單元素的enctype
的屬性。formMethod
:字符串,表示表單提交時的 HTTP 方法。該屬性可讀寫,一旦設(shè)置了這個屬性,會覆蓋表單元素的method
屬性。formNoValidate
:布爾值,表示表單提交時,是否要跳過校驗。該屬性可讀寫,一旦設(shè)置了這個屬性,會覆蓋表單元素的formNoValidate
屬性。formTarget
:字符串,表示表單提交后,服務(wù)器返回數(shù)據(jù)的打開位置。該屬性可讀寫,一旦設(shè)置了這個屬性,會覆蓋表單元素的target
屬性。
文本輸入框的特有屬性
以下屬性只有在<input>
元素可以輸入文本時才有效。
autocomplete
:字符串on
或off
,表示該<input>
節(jié)點的輸入內(nèi)容可以被瀏覽器自動補(bǔ)全。該屬性可讀寫。maxLength
:整數(shù),表示可以輸入的字符串最大長度。如果設(shè)為負(fù)整數(shù),會報錯。該屬性可讀寫。size
:整數(shù),表示<input>
節(jié)點的顯示長度。如果類型是text
或password
,該屬性的單位是字符個數(shù),否則單位是像素。該屬性可讀寫。pattern
:字符串,表示<input>
節(jié)點的值應(yīng)該滿足的正則表達(dá)式。該屬性可讀寫。placeholder
:字符串,表示該<input>
節(jié)點的占位符,作為對元素的提示。該字符串不能包含回車或換行。該屬性可讀寫。readOnly
:布爾值,表示用戶是否可以修改該節(jié)點的值。該屬性可讀寫。min
:字符串,表示該節(jié)點的最小數(shù)值或日期,且不能大于max
屬性。該屬性可讀寫。max
:字符串,表示該節(jié)點的最大數(shù)值或日期,且不能小于min
屬性。該屬性可讀寫。selectionStart
:整數(shù),表示選中文本的起始位置。如果沒有選中文本,返回光標(biāo)在<input>
元素內(nèi)部的位置。該屬性可讀寫。selectionEnd
:整數(shù),表示選中文本的結(jié)束位置。如果沒有選中文本,返回光標(biāo)在<input>
元素內(nèi)部的位置。該屬性可讀寫。selectionDirection
:字符串,表示選中文本的方向。可能的值包括forward
(與文字書寫方向一致)、backward
(與文字書寫方向相反)和none
(文字方向未知)。該屬性可讀寫。
復(fù)選框和單選框的特有屬性
如果<input>
元素的類型是復(fù)選框(checkbox)或單選框(radio),會有下面的特有屬性。
checked
:布爾值,表示該<input>
元素是否選中。該屬性可讀寫。defaultChecked
:布爾值,表示該<input>
元素默認(rèn)是否選中。該屬性可讀寫。indeterminate
:布爾值,表示該<input>
元素是否還沒有確定的狀態(tài)。一旦用戶點擊過一次,該屬性就會變成false
,表示用戶已經(jīng)給出確定的狀態(tài)了。該屬性可讀寫。
圖像按鈕的特有屬性
如果<input>
元素的類型是image
,就會變成一個圖像按鈕,會有下面的特有屬性。
alt
:字符串,圖像無法顯示時的替代文本。該屬性可讀寫。height
:字符串,表示該元素的高度(單位像素)。該屬性可讀寫。src
:字符串,表示該元素的圖片來源。該屬性可讀寫。width
:字符串,表示該元素的寬度(單位像素)。該屬性可讀寫。
文件上傳按鈕的特有屬性
如果<input>
元素的類型是file
,就會變成一個文件上傳按鈕,會有下面的特有屬性。
accept
:字符串,表示該元素可以接受的文件類型,類型之間使用逗號分隔。該屬性可讀寫。files
:返回一個FileList
實例對象,包含了選中上傳的一組File
實例對象。
其他屬性
defaultValue
:字符串,表示該<input>
節(jié)點的原始值。dirName
:字符串,表示文字方向。accessKey
:字符串,表示讓該<input>
節(jié)點獲得焦點的某個字母鍵。list
:返回一個<datalist>
節(jié)點,該節(jié)點必須綁定<input>
元素,且<input>
元素的類型必須可以輸入文本,否則無效。該屬性只讀。multiple
:布爾值,表示是否可以選擇多個值。labels
:返回一個NodeList
實例,代表綁定當(dāng)前<input>
節(jié)點的<label>
元素。該屬性只讀。step
:字符串,表示在min
屬性到max
屬性之間,每次遞增或遞減時的數(shù)值或時間。valueAsDate
:Date
實例,一旦設(shè)置,該<input>
元素的值會被解釋為指定的日期。如果無法解析該屬性的值,<input>
節(jié)點的值將是null
。valueAsNumber
:浮點數(shù),當(dāng)前<input>
元素的值會被解析為這個數(shù)值。如果輸入框為空,該屬性返回NaN
。
下面是valueAsNumber
屬性的例子。
/* HTML 代碼如下
<input type="number" value="1.234" />
*/
input.value // "1.234"
input.valueAsNumber // 1.234
HTMLInputElement 的實例方法
focus()
:當(dāng)前<input>
元素獲得焦點。blur()
:移除<input>
元素的焦點。select()
:選中<input>
元素內(nèi)部的所有文本。該方法不能保證<input>
獲得焦點,最好先用focus()
方法,再用這個方法。click()
:模擬鼠標(biāo)點擊當(dāng)前的<input>
元素。setSelectionRange()
:選中<input>
元素內(nèi)部的一段文本,但不會將焦點轉(zhuǎn)移到選中的文本。該方法接受三個參數(shù),第一個參數(shù)是開始的位置(從0開始),第二個參數(shù)是結(jié)束的位置(不包括該位置),第三個參數(shù)是可選的,表示選擇的方向,有三個可能的值(forward
、backward
和默認(rèn)值none
)。setRangeText()
:新文本替換選中的文本。該方法接受四個參數(shù),第一個參數(shù)是新文本,第二個參數(shù)是替換的開始位置(從0
開始計算),第三個參數(shù)是結(jié)束位置(該位置不包括在內(nèi)),第四個參數(shù)表示替換后的行為(可選),有四個可能的值:select
(選中新插入的文本)、start
(光標(biāo)位置移到插入的文本之前)、end
(光標(biāo)位置移到插入的文本之后)、preserve
(默認(rèn)值,如果原先就有文本被選中且本次替換位置與原先選中位置有交集,則替換后同時選中新插入的文本與原先選中的文本,否則保持原先選中的文本)。setCustomValidity()
:該方法用于自定義校驗失敗時的報錯信息。它的參數(shù)就是報錯的提示信息。注意,一旦設(shè)置了自定義報錯信息,該字段就不會校驗通過了,因此用戶重新輸入時,必須將自定義報錯信息設(shè)為空字符串,請看下面的例子。checkValidity()
:返回一個布爾值,表示當(dāng)前節(jié)點的校驗結(jié)果。如果返回false
,表示不滿足校驗要求,否則就是校驗成功或不必校驗。stepDown()
:將當(dāng)前<input>
節(jié)點的值減少一個步長。該方法可以接受一個整數(shù)n
作為參數(shù),表示一次性減少n
個步長,默認(rèn)是1
。有幾種情況會拋錯:當(dāng)前<input>
節(jié)點不適合遞減或遞增、當(dāng)前節(jié)點沒有step
屬性、<input>
節(jié)點的值不能轉(zhuǎn)為數(shù)字、遞減之后的值小于min
屬性或大于max
屬性。stepUp()
:將當(dāng)前<input>
節(jié)點的值增加一個步長。其他與stepDown()
方法相同。
下面是setSelectionRange()
方法的一個例子。
/* HTML 代碼如下
<p><input type="text" id="mytextbox" size="20" value="HelloWorld"/></p>
<p><button onclick="SelectText()">選擇文本</button></p>
*/
function SelectText() {
var input = document.getElementById('mytextbox');
input.focus();
input.setSelectionRange(2, 5);
}
上面代碼中,點擊按鈕以后,會選中llo
三個字符。
下面是setCustomValidity()
的例子。
/* HTML 代碼如下
<form id="form">
<input id="field" type="text" pattern="[a-f,0-9]{4}" autocomplete=off>
</form>
*/
const form = document.querySelector('#form');
const field = document.querySelector('#field');
form.addEventListener('submit', (e) => {
e.preventDefault(); // 防止這個例子發(fā)出 POST 請求
});
field.oninvalid = (event) => {
event.target.setCustomValidity('必須是一個 4 位十六進(jìn)制數(shù)');
}
field.oninput = (event) => {
event.target.setCustomValidity('');
}
上面代碼中,輸入框必須輸入一個4位的十六進(jìn)制數(shù)。如果不滿足條件(比如輸入xxx
),按下回車鍵以后,就會提示自定義的報錯信息。一旦自定義了報錯信息,輸入框就會一直處于校驗失敗狀態(tài),因此重新輸入時,必須把自定義報錯信息設(shè)為空字符串。另外,為了避免自動補(bǔ)全提示框遮住報錯信息,必須將輸入框的autocomplete
屬性關(guān)閉。
更多建議: