国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

當達到輸入長度時表單自動切換焦點

2024-05-06 16:03:48
字體:
來源:轉載
供稿:網(wǎng)友
給每個字段限制輸入長度,當達到輸入長度時自動切換焦點,以增強表單的易用性,需要的朋友可以參考下

當達到輸入長度時表單自動切換焦點


有時候會遇到和上面類似的表單字段。我們可以給每個字段限制輸入長度,當達到輸入長度時自動切換焦點,以增強表單的易用性

復制代碼 代碼如下:


<form>
<input type="text" maxlength="3">-
<input type="text" maxlength="3">-
<input type="text" maxlength="4">
<br>
<input type="submit" value="Submit">
</form>


復制代碼 代碼如下:


(function () {
function tabForward(e) {
e = e || window.event;
var target = e.target || e.srcElement;

if (target.value.length === target.maxLength) {
var form = target.form;

for (var i = 0, len = form.elements.length; i < len; i++) {
if (form.elements[i] === target) {
if (form.elements[i++]) {
form.elements[i++].focus();
}
break;
}
}
}
}

var textbox1 = document.getElementById("txt1");
var textbox2 = document.getElementById("txt2");
var textbox3 = document.getElementById("txt3");

textbox1.addEventListener("keyup", tabForward, false);
textbox2.addEventListener("keyup", tabForward, false);
textbox3.addEventListener("keyup", tabForward, false);

})();


代碼其實很簡單,判斷輸入字符串長度是否和事件目標的maxLength屬性長度相等,若相等,且表單還有下一個字段,則自動切換到下一個焦點。

簡單說下兩個屬性:

target.form form屬性指向當前字段所屬表單的指針,它是只讀的

form.elements elements屬性是表單中所有表單元素(字段)的集合。這個elements集合是一個有序列表,其中包含著表單中的所有字段,例如<input>、<textarea>、<button>和<fieldset>。每個表單字段在elements集合中的順序,與他們出現(xiàn)在標記中的順序相同,可以按照位置和name特性來訪問它們。例如:

復制代碼 代碼如下:


var form = document.getElementById("myForm");
var textbox1 = form.elements[0];
var textbox2 = form.elements["tel2"];


最后,我們再來看看上面的代碼,發(fā)現(xiàn)它還存在一些問題,比如這段代碼

復制代碼 代碼如下:


var textbox1 = document.getElementById("txt1");
var textbox2 = document.getElementById("txt2");
var textbox3 = document.getElementById("txt3");

textbox1.addEventListener("keyup", tabForward, false);
textbox2.addEventListener("keyup", tabForward, false);
textbox3.addEventListener("keyup", tabForward, false);


發(fā)現(xiàn)沒有,我們給每個字段添加了相同的事件處理程序。如果在復雜的web應用程序中,對每個元素都采用這種方式,那么結果就會有數(shù)不清的代碼用于添加事件處理程序。此時,可以利用事件委托來解決這個問題

其他代碼不變,將上面六行代碼換為下面的兩行會得到相同的結果,是不是感覺好多了呢

復制代碼 代碼如下:


var form = document.getElementById("myForm");
form.addEventListener("keyup", tabForward, false);


那什么又是事件委托呢,簡單說下原理,詳細內(nèi)容這里不解釋

事件委托利用了事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。比如,這里的keyup事件,只需給form元素指定一個onkeyup事件處理程序,而不必給每個字段添加事件
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 博客| 喜德县| 信宜市| 辉南县| 陇川县| 安福县| 紫金县| 泾川县| 寿光市| 开远市| 万山特区| 奉新县| 太康县| 冷水江市| 峡江县| 温泉县| 菏泽市| 东乡族自治县| 兴文县| 武冈市| 五原县| 滨州市| 克拉玛依市| 额敏县| 时尚| 嫩江县| 常宁市| 滕州市| 重庆市| 鸡东县| 扎兰屯市| 沐川县| 耒阳市| 灵璧县| 上饶县| 张家界市| 澄江县| 句容市| 绥江县| 靖安县| 普兰店市|