W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
input
、textarea
、password
、select
等元素都可以通過value
屬性取到它們的值。
select
是下拉列表元素。
<div>
<label for="os">Operating System</label>
<select name="os" id="os">
<option>Choose</option>
<optgroup label="Windows">
<option value="7 Home Basic">7 Home Basic</option>
<option value="7 Home Premium">7 Home Premium</option>
<option value="7 Professional">7 Professional</option>
<option value="7 Ultimate">7 Ultimate</option>
<option value="Vista">Vista</option>
<option value="XP">XP</option>
</optgroup>
<select>
</div>
可以通過value
屬性取到用戶選擇的值。
var data = document.getElementById('selectMenu').value;
selectedIndex
可以設(shè)置選中的項目(從0開始)。如果用戶沒有選中任何一項,selectedIndex
等于-1
。
document.getElementById('selectMenu').selectedIndex = 1;
select
元素也可以設(shè)置為多選。
<select name="categories" id="categories" multiple>
設(shè)為多選時,value
只返回選中的第一個選項。要取出所有選中的值,就必須遍歷select
的所有選項,檢查每一項的selected
屬性。
var selected = [];
for (var i = 0, count = elem.options.length; i < count; i++) {
if (elem.options[i].selected) {
selected.push(elem.options[i].value);
}
}
checkbox
是多選框控件,每個選擇框只有選中和不選中兩種狀態(tài)。
<input type="checkbox" name="toggle" id="toggle" value="toggle">
checked
屬性返回一個布爾值,表示用戶是否選中。
var which = document.getElementById('someCheckbox').checked;
checked
屬性是可寫的。
which.checked = true;
value
屬性可以獲取單選框的值。
if (which.checked) {
var value = document.getElementById('someCheckbox').value;
}
radio是單選框控件,同一組選擇框同時只能選中一個,選中元素的checked
屬性為true
。由于同一組選擇框的name
屬性都相同,所以只有通過遍歷,才能獲得用戶選中的那個選擇框的value
。
<input type="radio" name="gender" value="Male"> Male </input>
<input type="radio" name="gender" value="Female"> Female </input>
<script>
var radios = document.getElementsByName('gender');
var selected;
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
selected = radios[i].value;
break;
}
}
if (selected) {
// 用戶選中了某個選項
}
</script>
上面代碼中,要求用戶選擇“性別”。通過遍歷所有選項,獲取用戶選中的項。如果用戶未做任何選擇,則selected
就為undefined
。
所謂“表單驗證”,指的是檢查用戶提供的數(shù)據(jù)是否符合要求,比如Email地址的格式。
檢查用戶是否在input
輸入框之中填入值。
if (inputElem.value === inputElem.defaultValue) {
// 用戶沒有填入內(nèi)容
}
HTML 5原生支持表單驗證,不需要JavaScript。
<input type="date" >
上面代碼指定該input輸入框只能填入日期,否則瀏覽器會報錯。
但有時,原生的表單驗證不完全符合需要,而且出錯信息無法指定樣式。這時,可能需要使用表單對象的noValidate屬性,將原生的表單驗證關(guān)閉。
var form = document.getElementById("myform");
form.noValidate = true;
form.onsubmit = validateForm;
上面代碼先關(guān)閉原生的表單驗證,然后指定submit事件時,讓JavaScript接管表單驗證。
此外,還可以只針對單個的input輸入框,關(guān)閉表單驗證。
form.field.willValidate = false;
每個input輸入框都有willValidate屬性,表示是否開啟表單驗證。對于那些不支持的瀏覽器(比如IE8),該屬性等于undefined。
麻煩的地方在于,即使willValidate屬性為true,也不足以表示瀏覽器支持所有種類的表單驗證。比如,F(xiàn)irefox 29不支持date類型的輸入框,會自動將其改為text類型,而此時它的willValidate屬性為true。為了解決這個問題,必須確認input輸入框的類型(type)未被瀏覽器改變。
if (field.nodeName === "INPUT" && field.type !== field.getAttribute("type")) {
// 瀏覽器不支持該種表單驗證,需自行部署JavaScript驗證
}
checkValidity方法表示執(zhí)行原生的表單驗證,如果驗證通過返回true。如果驗證失敗,則會觸發(fā)一個invalid事件。使用該方法以后,會設(shè)置validity對象的值。
每一個表單元素都有一個validity對象,它有以下屬性。
setCustomValidity方法用于自定義錯誤信息,該提示信息也反映在該輸入框的validationMessage屬性中。如果將setCustomValidity設(shè)為空字符串,則意味該項目驗證通過。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: