JavaScript --- 表單focus,blur,change事件的實現

假設有一個文本框,我們只允許用戶輸入數值。為此,我們希望:
1.利用focus事件修改文本框內容,
2.利用blur事件回復文本框的內容,
3.利用change事件在用戶輸入了非數值字符時再次修改背景顏色。

var EventUtil = {addHandler: function(element, type, handler) { // 跨瀏覽器的添加事件方法if ( element.addEventListener) {  // DOM2級事件處理程序element.addEventListener(type, handler, false); // 第3個參數表示在冒泡階段添加} else if (element.attachEvent) {   // IE事件處理程序element.attachEvent("on" + type, handler);} else { // DOM0級事件處理程序element["on" + type] = handler;}},getEvent: function(event) { // 兼容獲取事件return event ? event : window.event;},getTarget: function(event) { // 兼容獲取目標return event.target || event.srcElement;}
};
// 利用上面的方法開始實現文本描述的功能
var textbox = document.forms[0].elements[0];  // 得到第一個表單的第一個元素(一般是Input)EventUtil.addHandler(textbox, "focus" , function(event) {  // 添加焦點事件event = EventUtil.getEvent(event);var target = EventUtil.getTarget(event);if (target.style.backgroundColor != "red"){target.style.backgroundColor = "yellow";}
});EventUtil.addHandler(textbox, "blur", function(event){event = EventUtil.getEvent(event);var target = EventUtil.getTarget(event);if (/[^\d]/.test(target.value)){  // 非字符target.style.backgroundColor = "red";} else {target.style.backgroundColor = "";}
});EventUtil.addHandler(textbox, "change", function(event){event = EventUtil.getEvent(event);var target = EventUtil.getTarget(event);if (/[^\d]/.test(target.value)){target.style.backgroundColor = "red";} esle {target.style.backgroundColor = "";}
});

摘自《JavaScript高級程序設計》(第三版) P418
ps:純手打,出錯私信我

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql日期格式轉化

select DATE_FORMAT( 20170701, %Y-%m-%d);先挖坑轉載于:https://www.cnblogs.com/tuhooo/p/7766221.html

Solr管理頁面 上

DashBoard(儀表盤)Logging(日志)Core Admin(Core管理)在Solr中,每一個Core,代表一個索引庫,里面包含索引數據及其配置信息。Solr中可以擁有多個Core,也就同時…

GRPC協議的相關原理

GRPC的Client與Server,均通過Netty Channel作為數據通信,序列化、反序列化則使用Protobuf,每個請求都將被封裝成HTTP2的Stream,在整個生命周期中,客戶端Channel應該保持長連接,而不是每次調用重新創建Chann…

Echarts --- 各個省份的坐標

純手打…效果如下 1.新疆: [86.61 , 40.79] 2.西藏:[89.13 , 30.66] 3.黑龍江:[128.34 , 47.05] 4.吉林:[126.32 , 43.38] 5.遼寧:[123.42 , 41.29] 6.內蒙古:[112.17 , 42.81] 7.北京:[116.40 , 40.40 ] 8.寧夏:[106.27 , 36.76] 9.山西:[111.95,37.65] 10.河北:[115.21 , 38.…

xxx征集系統項目目標文檔

問題 每四人一組,討論結束后,每人根據課堂討論結果提交一份系統利益相關者案例。撰寫撰寫項目目標文檔(目標,好處,度量標準。) 項目目標文檔 目標: (1)需求填報 &#xf…

高并發大流量專題---10、MySQL數據庫層的優化

高并發大流量專題---10、MySQL數據庫層的優化 一、總結 一句話總結: mysql先考慮做分布式緩存,過了緩存后就做mysql數據庫層面的優化 1、mysql數據庫層的優化的前面一層是什么? 數據庫緩存:突破了數據庫緩存就需要做mysql數據庫層…

【彩彩只能變身隊】后端工作總結

2018.06.09 早上8點到晚上10點 沖刺前后端交互(vueexpressmysql) 8&#xff1a;00-12&#xff1a;00 &#xff1a; 前端把請求寫好&#xff1a; <template> <div class"LoginForm"> <el-form ref"form" label-width"80px"…

web安全

web安全 DOS命令 web攻防必備課筆記 慕課xss學習 阮一峰&#xff1a;MVC、MVP和MVVM的圖示轉載于:https://www.cnblogs.com/hanxuming/p/7774092.html

JavaScript --- 渲染數據量大的數組

很多時候&#xff0c;需要在頁面上展示從后臺來的大量數據,如果一次性渲染&#xff0c;會影響用戶的體驗。(而且瀏覽器中的JS嚴格限制了資源) /* *使用分組的思想來渲染大量的數組 *parmas array 要處理的數組 *params process 對數組中每一個item進行的操作 *parmas context …

Jquery操作select小結

每次操作select都要查資料&#xff0c;干脆總結一下。 為select設置placeholder <select class"form-control selOP" placeholder"Pick Orchestration Plan"><option value"" disabled selected styledisplay:none;>Pick Orchestrat…

第六講:PrintClient工具的使用

一些簡單命令&#xff1a; cp -rf 源目錄 目的目錄 chmod -R 777 文件名 motelist 查看節點路徑 make telosb 編譯代碼 make telosb reinstall 下載但不編譯 make telosb install 編譯并且下載 make telosb install, 2 bsl,/dev/ttyUSB0 下載指定路徑 java net.tinyos.tools.Li…

SQL Server

查看數據庫服務器名稱&#xff1a;tracert 192.168.10.01 轉載于:https://www.cnblogs.com/hongwei2085/p/9174760.html

css --- 選擇器

標簽選擇器 // 標簽選擇器是最簡單的選擇器, 它的命名只要和對應的HTML標簽相同即可 h1 {font-size: 30px;color: #333; }類選擇器 // 類選擇器也稱為class選擇器,它的語法非常簡單,在class名稱前面加上一個"."符號 <div class"red content"></…

C++標準輸入流、輸出流以及文件流

1、流的控制 iomanip 在使用格式化I/O時應包含此頭文件。 stdiostream 用于混合使用C和C 的I/O機制時&#xff0c;例如想將C程序轉變為C程序 2、類繼承關系 ios是抽象基類&#xff0c;由它派生出istream類和ostream類&#xff0c; iostream類支持輸入輸出操作&…

Hadoop學習筆記—8.Combiner與自定義Combiner

一、Combiner的出現背景 1.1 回顧Map階段五大步驟 在第四篇博文《初識MapReduce》中&#xff0c;我們認識了MapReduce的八大步湊&#xff0c;其中在Map階段總共五個步驟&#xff0c;如下圖所示&#xff1a; 其中&#xff0c;step1.5是一個可選步驟&#xff0c;它就是我們今天需…

6-12mysql庫的操作

1&#xff0c;mysql庫的各種分類: nformation_schema&#xff1a; 虛擬庫&#xff0c;不占用磁盤空間&#xff0c;存儲的是數據庫啟動后的一些參數&#xff0c;如用戶表信息、列信息、權限信息、字符信息等.  performance_schema&#xff1a; MySQL 5.5開始新增一個數據庫&am…

css --- 行內框和內容區

css規定font-size的大小實際上是字體的高度 可以將內容區理解為font-size的大小. 行內高可以理解為 ( (line-height) - (font-size) ) /2 然后再font-size 的上下加上前面的值 看下面的例子 <p style"font-size:12px;line-height:12px;">this is text, <em&…

DotNetTextBox V3.0 所見即所得編輯器控件 For Asp.Net2.0(ver 3.0.7Beta) 增加多語言!

英文名&#xff1a;DotNetTextBox V3.0 WYSWYG Web Control For Asp.Net2.0 中文名&#xff1a;DotNetTextBox V3.0 所見即所得編輯器控件 For Asp.Net2.0 類型: 免費控件(保留版權) 作者: 小寶.NET 2.0(Terry Deng) 主頁&#xff1a;http://www.aspxcn.com.cn 控件演示頁面: h…

phantomjs

npm 安裝 phantomjs失敗&#xff0c;解決辦法是到http://phantomjs.org/download.html 下載需要的壓縮包&#xff0c;然后放到%appData%\Local\Temp\phantomjs\下&#xff0c;重新執行npm i 轉載于:https://www.cnblogs.com/tellme/p/7777626.html

js動態刪除行錯誤

Uncaught TypeError: Failed to execute removeChild on Node: parameter 1 is not of type Node. js中出現如上錯誤&#xff0c;檢查驗證document.getElementById&#xff08;&#xff09;中的參數是否傳遞正確&#xff0c; 例&#xff1a; var textnumber parseInt(docume…