點選方向鍵實現文字框焦點切換程式碼例項
本章節介紹一下如何實現點選方向鍵即可實現切換文字框的焦點的效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function is_down(e) { var isDown; switch (e.keyCode) { case 13: //Enter鍵 case 39: //向右移動鍵 case 40: //向下移動鍵 isDown = true; break; case 37: //向左移動鍵 case 38: //向上移動鍵 isDown = false; break; } return isDown; } function key_up(e){ var e=e||window.event; 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 index = 0, len = elements.length-1; index < len; index++) { if (field == elements[index]) { break; } } index = is_down ? (index + 1) % elements.length : (index - 1) % elements.length; if((0===index && is_down)||(-1===index && !is_down)){ return true; } elements[index].focus(); var element_arr = ['button', 'submit', 'reset', 'select-one', 'textarea']; if (element_arr.join(',').indexOf(elements[index].type) > -1){ elements[index].select(); } return false; } document.onkeydown = function(e) { e = e || window.event; if(e.keyCode == 13) { e.preventDefault ? e.preventDefault() : (e.returnValue = false); } }; 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; } } window.onload=function(){ var elements = document.forms[0].elements; for(var index = 0, len = elements.length; index < len; index++) { addHandler(elements[index], "keyup", key_up); } } </script> </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> </body> </html>
上面的程式碼實現了我們的功能,點選方向鍵可以實現切換焦點效果,點選Enter鍵也可以實現。
一.程式碼註釋:
1.function is_down(e) { var isDown;
switch (e.keyCode) {
case 13: //Enter鍵
case 39: //向右移動鍵
case 40: //向下移動鍵
isDown = true;
break;
case 37: //向左移動鍵
case 38: //向上移動鍵
isDown = false;
break;
}
return isDown;
},此函式用來判斷焦點時向上移動還是向下移動,返回值是一個布林值,如果是true則向上移動,否則是向下移動。當點選Enter鍵或者向右和向下的方向鍵的時候就是向下移動焦點,當點選向左或者向上方向鍵的時候,焦點就是向上移動。
2.function key_up(e){
var e=e||window.event;
return is_down(e) === undefined ? true : handle_element(this, is_down(e));
},用作事件處理函式,判斷是否是點選的方向鍵和Enter鍵,如果是則執行handle_element()進行切換焦點的操作,如果不是點選的這幾個鍵,則返回true執行正常的操作。
3.function handle_element(field, is_down){},此函式可以實現焦點的切換效果,第一個引數是當前焦點所在的元素物件,第二個引數是一個布林值,用來規定焦點切換的方向。
4.var elements = field.form.elements,獲取form表單下的所有表單元素。5.for (var index = 0, len = elements.length-1; index < len; index++) {
if (field == elements[index]) {
break;
}
},遍歷每一個表單元素以此來判斷當前表單元素在表單元素集合中的位置。
6.index=is_down ? (index+1) % elements.length: (index-1) % elements.length,使用求餘的方式獲取要切換到的表單元素索引。
7.if((0===index && is_down)||(-1===index && !is_down)){
return true;
},如果是最後元素則不會再向下切換,如果是第一個元素則不會再向上切換。8.elements[index].focus(),是切換到的元素獲取焦點。
9.var element_arr = ['button', 'submit', 'reset', 'select-one', 'textarea'],將表單元素的型別存入陣列。
10.if (element_arr.join(',').indexOf(elements[index].type) > -1){
elements[index].select();
}判斷當前元素的型別字串是否在連線後的字串中,如果在則選中當前表單元素中的內容。
11.document.onkeydown = function(e) {
var e = e || window.event;
if(e.keyCode == 13) {
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}
},取消點選回車的預設動作,比如點選回車可能會使表單提交。
12.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;
}
}相容所有瀏覽器的註冊事件處理函式。
13.window.onload=function(){
var elements = document.forms[0].elements;
for(var index = 0, len = elements.length; index < len; index++) {
addHandler(elements[index], "keyup", key_up);
}
},為每一個表單元素註冊keyup事件處理函式。
二.相關閱讀:
1.keyCode可以參閱js的鍵盤按鍵keyCode屬性值對應表一章節。
2.var e=e||window.event可以參閱var ev=window.event||ev的作用是什麼一章節。
3.join()方法可以參閱javascript join()一章節。
4.indexOf()方法可以參閱javascript String indexOf()一章節。
5.preventDefault()方法可以參閱javascript preventDefault()一章節。
6.註冊事件處理函式可以參閱javascript如何註冊事件處理函式一章節。
相關文章
- 文字框獲得和失去焦點程式碼例項
- 點選enter回車能夠切換表單元素焦點程式碼例項
- 文字框點選清除預設文字例項程式碼
- 點選按鈕複製文字框文字程式碼例項
- js點選文字框選中文字效果程式碼例項JS
- jQuery點選文字框清除內容程式碼例項jQuery
- 點選獲取焦點可以伸縮的搜尋框程式碼例項
- 文字框失去焦點即刻進行表單驗證程式碼例項
- css 文字框focus獲取焦點設定樣式程式碼例項CSS
- 點選按鈕實現文字框數字增加或者減少程式碼例項
- jQuery實現文字框獲取焦點jQuery
- 點選文字框彈出可檢索下拉選單程式碼例項
- js實現的點選複製選中文字程式碼例項JS
- js讓文字框獲取焦點程式碼JS
- 在文字框輸入關鍵詞可以實現篩選功能程式碼例項
- js實現文字框提示程式碼例項JS
- CSS實現的文字框獲取焦點設定樣式程式碼CSS
- 點選文字框實現文字框內容選中效果
- jQuery文字框獲取焦點和失去焦點jQuery
- javascript實現的點選彈出刪除提示框程式碼例項JavaScript
- tab選項卡切換例項程式碼
- 如何使用angularjs實現文字框獲取焦點AngularJS
- JavaScript 點選複製選中文字程式碼例項JavaScript
- 點選實現顯示密碼效果程式碼例項密碼
- 點選實現隱藏元素本身程式碼例項
- View手動切換焦點注意事項View
- 去除input焦點描邊程式碼例項
- 點選文字框彈出可供選擇的checkbox核取方塊程式碼例項
- javascript實現的文字框焦點位置放置於尾部JavaScript
- 選中文字框文字觸發事件程式碼例項事件
- js點選div實現閃爍效果程式碼例項JS
- jQuery模擬實現滑鼠點選事件程式碼例項jQuery事件
- js點選實現多圖順序切換和迴圈切換效果程式碼JS
- 實現密碼框預設文字效果例項程式碼密碼
- 模擬實現文字框游標效果程式碼例項
- 實現文字框輸入內容提示程式碼例項
- 點選文字框刪除提示文字效果程式碼
- 如何實現點選文字框清除其中文字