javascript實(shí)現(xiàn)按回車鍵切換焦點(diǎn)
前段時間學(xué)習(xí)了 HTML 和 CSS,對這方面產(chǎn)生了興趣,也開始學(xué)習(xí)了 javascript 高級編程(第三版),這些天也一直在學(xué),剛剛學(xué)到事件和表單腳本的內(nèi)容。前幾天,老師讓編寫一段代碼:是在 javascript 表單中,用回車鍵和上下左右移動鍵使焦點(diǎn)從一個文本框移到上一個或下一個文本框中。應(yīng)用目前為止學(xué)到的知識試著編寫代碼,在編寫的過程中遇到了幾個難點(diǎn):取模計算;在函數(shù)內(nèi)部用 this 和 arguments 找到觸發(fā)事件;使用 addHandler() 方法為事件添加事件處理程序。在老師的幫助下解決了以上幾個問題,自己覺得通過這段代碼學(xué)到了很多知識點(diǎn),所以整理完后寫上注釋,發(fā)表一下下。
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input type="submit" ></div>
</form>
<script>
function is_down(e) {
var isDown;
e = e || window.event;
switch (e.keyCode) {
case 13: //回車鍵
case 39: //向右移動鍵
case 40: //向下移動鍵
isDown = true;
break;
case 37: //向左移動鍵
case 38: //向上移動鍵
isDown = false;
break;
}
return isDown;
}
function key_up(){
//調(diào)用函數(shù)時,函數(shù)本身會生成 this 和 arguments
//用 this 和 arguments 分別找到 field 和觸發(fā)的事件
var e=arguments[1];
return is_down(e) === undefined ? true : handle_element(this, is_down(e));
}
function handle_element(field, is_down) {
var elements = field.form.elements;
for (var i = 0, len = elements.length-1; i < len; i++) {
if (field == elements[i]) {
break;
}
}
i = is_down ? (i + 1) % len : (i - 1) % len;
//(0===i && is_down) --> 最后一個文本框獲得焦點(diǎn)后按向下的鍵
//(-1===i && !is_down) --> 第一個文本框獲得焦點(diǎn)后按向上的鍵
if((0===i && is_down)||(-1===i && !is_down)){
return true;
}
elements[i].focus();
var element_arr = ['button', 'submit', 'reset', 'select-one', 'textarea'];
if (element_arr.join(',').indexOf(elements[i].type) > -1)
elements[i].select();
return false;
}
//取消回車默認(rèn)提交表單事件
document.onkeydown = function(e) {
e = e || window.event;
if(e.keyCode == 13) {
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}
};
//跨瀏覽器識別 addEventListener 和 attachEvent(IE)
function addHandler(element, type, handler) {
if (element.addEventListener)
element.addEventListener(type, handler, false);
else if (element.attachEvent)
element.attachEvent("on" + type, handler);
else
element["on" + type] = handler;
}
var elements = document.forms[0].elements;
for (var i = 0, len = elements.length; i < len; i++) {
//為 keyup 事件添加 key_up 事件處理程序
addHandler(elements[i], "keyup", key_up);
}
</script>
</body>
</html>
以上就是代碼的全部內(nèi)容了,個人感覺寫的還算比較全面,該考慮到的地方都做了處理,希望大家能夠喜歡。
- javascript自動切換焦點(diǎn)控制效果完整實(shí)例
- JS實(shí)現(xiàn)方向鍵切換輸入框焦點(diǎn)的方法
- Javascript中自動切換焦點(diǎn)實(shí)現(xiàn)代碼
- JavaScript 回車 焦點(diǎn)切換
- js實(shí)現(xiàn)獲取焦點(diǎn)后光標(biāo)在字符串后
- js/jquery獲取文本框輸入焦點(diǎn)的方法
- 通過JS來判斷頁面控件是否獲取焦點(diǎn)
- js 獲取坐標(biāo) 通過JS得到當(dāng)前焦點(diǎn)(鼠標(biāo))的坐標(biāo)屬性
- JavaScript 關(guān)于元素獲取焦點(diǎn)(隱藏元素與div)
- JavaScript判斷表單為空及獲取焦點(diǎn)的方法
相關(guān)文章
JavaScript實(shí)現(xiàn)獲取本機(jī)IP地址
這篇文章主要介紹了JavaScript實(shí)現(xiàn)獲取本機(jī)IP地址方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
JS如何操作DOM基于表格動態(tài)展示數(shù)據(jù)
這篇文章主要介紹了JS如何操作DOM基于表格動態(tài)展示數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
List Information About the Binary Files Used by an Applicati
List Information About the Binary Files Used by an Application...2007-06-06
Javascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例
下面小編就為大家?guī)硪黄狫avascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
javascript實(shí)現(xiàn)點(diǎn)擊小圖顯示大圖
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊小圖顯示大圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11
JS實(shí)現(xiàn)直接運(yùn)行html代碼的方法
這篇文章主要介紹了JS實(shí)現(xiàn)直接運(yùn)行html代碼的方法,涉及javascript窗口操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03

