背景
当我们在做后台管理系统时,经常会遇到非常复杂的表单:
- 表单项非常多
- 在各种表单类型下,显示不同的表单项
- 在某些条件下,某些表单项会关闭验证
- 每个表单项还会有其他自定义逻辑,比如输入框可以插入模板变量、输入字符数量显示、图片上传并显示、富文本。。。
- 在这种错综复杂的情况下,完成表单的验证和提交
- 可以查看具体例子:例子中省略了很多琐碎的功能,只保留整体的复杂表单框架,用于展示解决方案
昨天,我在雅虎的同事 Scott Schiller (斯科特·席勒, 同时也是 SoundManager 创造者) 发 Twitter 询问为何 getElementsByTagName("a")
在所有浏览器上都比 querySelectorAll("a")
要快好多倍。 有一个 专门的 JSPerf 测试页面, 通过对比就能发现两者的速度差异相当明显。 比如作者在 Windows XP 下使用的 Firefox 3.6.8 浏览器, querySelectorAll("a")
比 getElementsByTagName("a")
的运行速度要低98%. 我和 Scott, 以及 YUI 团队的 Ryan Grove 有一个活跃的 Twitter-sation, 关于这种现象的原因,以及情理之中让人沮丧的结果。 我想好好地解释说明下到底为什么会发生这种情况,以及为什么未来也可能不会改变。
在《JavaScript高级程序设计》一书中发现一段代码,很值得借鉴:
••••••方法一:正则分析法:
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
•••••• This is a watermark input plugin for jQuery. Currently this is a beta release. This simple plugin allows forms with limited space to display additional information about the contents of a field.
••••••上周一个朋友让给他解决一个在地图上对应显示省份的问题,才了解到 JVectorMap 这个地图插件;
JVectorMap 是一个优秀的、兼容性强的 jQuery 地图插件。它可以工作在包括 IE6 在内的各款浏览器中,矢量图输出,除官方提供各国地图数据外,用户可以使用数据转换程序定制地图数据。对浏览器的支持:在 Firefox 3 or 4, Safari, Chrome, Opera, IE9 之类的高版本浏览器中使用 SVG 绘制地图;同时也支持老的 ie 浏览器 ie6 到 ie8。
••••••前段时间接了一个外包项目,有一个功能是网页在线录音并上传云服务器的需求,之前没有接触过,想着Google了一下找个demo改改;
找到三个,基本能满足需求:
总是被 JavaScript 的 event 对象中的 clientX, offsetX, screenX, pageX 弄得晕头转向,借用 stackoverflow 上面的两个图来表示一下:
pageX, pageY, screenX, screenY, clientX and clientY 返回的是像素'css pixels'.
今天在工作中遇到需要js动态的改变embed的src值进行切换的效果;
<div class="m-video">
<div class="v-play">
<embed allowfullscreen="true" allowscriptaccess="always" height="450" name="cc_4B7838C6838BB3B99C33DC5901307461" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://p.bokecc.com/flash/player.swf?vid=4B7838C6838BB3B99C33DC5901307461&siteid=4F21A251DAE61656&autoStart=false&playerid=08C25F053497D927&playertype=2" type="application/x-shockwave-flash" width="660" wmode="transparent"></embed>
</div>
<ul class="v-tit">
<li data-src="http://p.bokecc.com/flash/player.swf?vid=4B7838C6838BB3B99C33DC5901307461&siteid=4F21A251DAE61656&autoStart=true&playerid=08C25F053497D927&playertype=2"><img src="http://u1.huatu.com/image/2014image/201510/zgzx/ztfx1.jpg" alt=""></li>
<li data-src="http://p.bokecc.com/flash/player.swf?vid=1A42E7BBB7A33C6A9C33DC5901307461&siteid=4F21A251DAE61656&autoStart=true&playerid=08C25F053497D927&playertype=2"><img src="http://u1.huatu.com/image/2014image/201510/zgzx/haiguan1.jpg" alt=""></li>
<li data-src="http://p.bokecc.com/flash/player.swf?vid=7A911A9BDBD30B2D9C33DC5901307461&siteid=4F21A251DAE61656&autoStart=true&playerid=08C25F053497D927&playertype=2"><img src="http://u1.huatu.com/image/2014image/201510/zgzx/haishiju1.jpg" alt=""></li>
</ul>
</div>
••••••