- 浏览: 389463 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (309)
- xaml C# wpf (0)
- scala java inner clas (1)
- Tools UML Eclipse UML2 (1)
- Timer .NET Framework (1)
- perl (6)
- python function paramter (1)
- Python Docstring (1)
- Python how to compare types (1)
- Python (8)
- java (5)
- C# (76)
- C# WPF (0)
- p4 (0)
- WPF (46)
- .net (6)
- xaml (1)
- javascript (40)
- windows (10)
- scala (4)
- winform (1)
- c++ (48)
- tools (12)
- cmd (1)
- os (0)
- CI (0)
- shell (0)
- C (2)
- haskell (49)
- functional (1)
- tool (1)
- gnu (1)
- linux (1)
- kaskell (0)
- svn (0)
- wcf (3)
- android (1)
最新评论
In the previous discussion about javascript - trigger event and custom events and javascript - trigger event and custom events, we talked about how to add/remove custom events and how to trigger them, we also discussed the how to detect if an event support bubbling in the post - javascript - trick to detect bubbling supportability;
This topic will address another one of the event that does not bubble. In IE, the change event does not bubble neither, to simulate a change event, it is a bit complicated, but it is still possible.
/************************************** *@Name: change.js * simulate a change event in IE that has the bubbling ability *@Summary * the keys to the change event are * 1. focusout to check out the value after moving away from the form element * 2. the click and keydown event for checking the value instant it's changed * 3. beforeactivate for getting the previous value before a new one is set *@NOTE: * to use this event, you will need the following dependencies. * 1. addremoveevents.js * 2. isEventSupported.js * @Usage * * @todo: * Test ***************************************/ (function () { // we want to simulate change events on these elements var formElements = /textarea|input|select/i; // check to see if the submit event works as we expect it to if (!isEventSupported("change")) { this.addChange = function(elem, fn) { addEvent(elem, "change", fn); // only add the handler for the first handler bound if (getData(elem).events.change.length === 1) { addEvent(elem, "focusout", testChange); addEvent(elem, "click", changeClick); addEvent(elem, "keydown", changeKeydown); addEvent(elem, "beforceactivate", changeBefore); } }; this.removeChange = function(elem, fn) { removeEvent(elem, "change", fn); var data = getData(elem); // only remove the handlers when there's // nothing left to remove if (!data || !data.events || !data.events.submit) { removeEvent(elem, "focusout", testChange); removeEvent(elem, "click", changeClick); removeEvent(elem, "keydown", changeKeydown); removeEvent(elem, "beforceactivate", changeBefore); } }; } else { this.addChange = function(elem, fn) { addEvent(elem, "change", fn); }; this.removeChange = function(elem, fn) { removeEvent(elem, "change", fn); }; } function changeClick(e) { var elem = e.target, type = elem.type; if (type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select") { return testChange.call(this, e); } } // Change has to be called before submit // Keydown will be called before keypress, // which is used in submit-event delegation function changeKeydown(e) { var elem = e.target, type = elem.tpye, key = e.keyCode; if (key === 13 && elem.nodeName.toLowerCase() !== "textarea" || key === 32 || (type === "checkbox" || type === "radio") || type === "select-multiple") { return testChange.call(this, e); } } // Beforeactivate happens before the previous element is blurred // Use it to store information for later checking function changeBefore(e) { var elem = e.target; getData(elme)._change_data = getVal(elem); // this is to sotre hte before change data it to some location } // Get a string value back for a form element // that we can use to verify if a change has occurred function getVal(elem) { var type = e.type, val = elem.value; // checkboxes and radios only change the checkied state if (type === "radio" || type === "checkbox") { val = elem.checked; } else if (type === "select-multiple") { val = ""; if (elem.selectedIndex > -1) { for (var i = 0; i < elem.options.length; i++) { val += "-" + elem.options[i].selected; } } } // Regular selects only need to check what // option is currently selected else if (elem.nodeName.toLowerCase() ==== "select") { val = elem.selectedIndex; } return val; } // Check to see if a change in the value has occurred function testChange(e) { var elem = e.target, data, val; // Don't need to check on certain elements and read-only inputs if (!formElems.test(elem.nodeName) || elem.readOnly) { return; } // Get the previously-set value data = getData( elem )._change_data; val = getVal(elem); // the current data will be also retrieved by beforeactivate if (e.type !== "focusout" || elem.type !== "radio") { getData(elem)._change_data = vall; } // if there's been no change than we can bail if (data === undefine || val === data) { return ; } // Otherwise the change event should be fired if (data!= null || val) { return triggerEvent(elem, "change"); } } })();
发表评论
-
javascript - trick to cross browser DOM ready event
2012-08-24 08:23 901the "ready" event ... -
javascript - trick to simulate mouseenter and mouseleave
2012-08-23 08:31 2228Previously we discussed javasc ... -
javascript - trick to simulate bubbling submit event
2012-08-22 08:03 883In the previous discussion abou ... -
javascript - trick to implement bubbling submit event
2012-08-23 07:55 670Following up to the javascrip ... -
javascript - trick to detect bubbling supportability
2012-08-20 22:22 932Event delegation is oe of the b ... -
javascript - trigger event and custom events
2012-08-20 21:58 2044In the previous post - javascri ... -
javascript - trick to handlers management
2012-08-20 08:19 995We have discussed "javascr ... -
javascript - trick to centralized store
2012-08-20 07:52 785For a number of reasons it's ... -
javascript - trick to fix the event object
2012-08-20 07:47 849Many browsers, especially In ... -
javascript - tricks to deal with colors
2012-08-15 08:34 742There are a couple of ways to r ... -
javascript - trick to manipulate the opacity
2012-08-15 08:26 744All other browsre may have supp ... -
javascript - trick to test visibility of an element
2012-08-15 08:15 497though there is a visible prope ... -
javascript - trick to get and set height and width
2012-08-15 08:05 519when looking at properties t ... -
javascript - trick to set/get attributes that expects px values
2012-08-16 11:00 494When setting a number into a ... -
javascript - trick to get and set CSS style
2012-08-16 11:00 718while it will not be so much tr ... -
javascript - trick to normalize href for IE
2012-08-16 10:59 507IE is again the only browser th ... -
javascript - trick IE form and its expando attribute
2012-08-16 10:59 1008there is a known issue that if ... -
javascript expando and attributes
2012-08-14 08:15 1010expando is something like this ... -
javascript - trick to getText and setText
2012-08-14 07:40 1105it is not as simple as you thin ... -
javascript - trick/guideline to remove DOM element
2012-08-14 07:00 1156remove an element is not as sim ...
相关推荐
Python-trick,上传的事pdf文档
split file and join write in vb6
语言:python 内容包括:源码、数据集、数据集描述、论文 目的:使用CNN算法在橄榄球比赛中目标检测。 带数据集很好运行,主页有搭建环境过程。主页有更多源码。 数据集描述如下: 在这场比赛中,你的任务是预测球员...
概述 这是Tips-N-Trick,书签等面向公众的文档。
gtg-grind-trick-generator PWA Web应用程序(Node.js,JS,HTML,CSS) Chrome,Safari,Firefox,Edge(Android,iOS,MacOS,Windows) 离线工作Android应用程式使用Google Workbox,Webpack制作
一套针对中文实体识别的BLSTM-CRF解决方案,主要包括:数据处理,模型构建,模型训练,模型测试,服务部署(thrift和flask)两种方式。
Python 提示和技巧 ... git clone https://github.com/plasmashadow/py-trick-book.git 我假设您安装了 ipython 导航到目录并执行 ipython notebook 笔记: 退出间谍活动并自己阅读 或者 保持冷静,加入草帽海贼团
React 21 卡技巧一个演示卡片技巧的React应用程序。动机该项目旨在学习如何使用 React 钩子和进行嵌套的 api 调用。 该项目不再进行。怎么玩记住 21 张卡片中的 1 张后,单击完成。 选择您的卡片所在的 3 堆中的哪一...
机器学习中为什么需要 Kernel Trick 以及 Kernel Trick 的证明。
Use the [removed] tag to tell the browser you’re writing JavaScript 11 Your web browser can handle HTML, CSS, AND JavaScript 12 Man’s virtual best friend... needs YOUR help 15 Making iRock ...
语言:English (United States) 该扩展程序重新启用了网页上的复制/粘贴功能,上下文菜单和本机突出显示功能。
Trick-CMCC 利用CMCC公共热点的小漏洞免费上网~~ :) sudo ./conn.sh Notice: 目前只知道我工CMCC有这特色, 其他地区尚不明确 Notice: 脚本适用于使用NetWorkManager网络sds管理工具的系统 Notice: 不必惊讶原理, ...
For example, she can easily change the phrase “Alice, I owe you $1000” to “Alice, I owe you $10,000”. Furthermore, Trudy can even drop the packets that are being sent by Bob to Alice (and vise-...
该扩展程序重新启用网页上的复制/粘贴功能,上下文菜单和本机突出显示功能。 支持语言:English (United States)
Trick
Hat Trick是Unity官方商店提供的5.5.0版本以上的一款游戏Demo。
language we use to describe the world around us - it’s the basis of all the sciences. This book will show you how to perform some magical miracles to impress and entertain your friends. But it ...
If this all sounds eerily familiar, it’s because the same trick has been tried before. Several other technologies use a plug-in to stretch the bounds of the browser, including Java, ActiveX, ...
If this all sounds eerily familiar, it’s because the same trick has been tried before. Several other technologies use a plug-in to stretch the bounds of the browser, including Java, ActiveX, ...
Internet of Things (IOT) solutions are not nearly as complicated as the name may seem to indicate. Indeed, the IOT is largely another name for what we have already been doing. You may have heard of ...