Edi Wang

Web Front-End 20


如何解决AngularJs在IE下取数据总是缓存的问题

如果用AngularJs在IE下发出GET请求从后台服务取完Json数据再绑定到页面上显示的话,你可能会发现就算数据更新了,IE还是会显示原来的结果。实际上这时候IE的确是缓存了hashtag,没有再次去做Http GET请求最新的数据。 最直接的办法是在后台撸掉OutputCache,但这种做法并不推荐,需要改每一处被Angular调用的地方,代价太大。这种问题应该在前端解决最好。研究了一会儿总结了最有效的解决方法,并不需要改后台代码了。 在你的app config里撸一个$httpProvider进去,比如像我这样,和路由可以配在一起,当然分开配也没问题。 var config = ["...

AJAXIEAngularJs

jQuery.maskedinput如何验证日期(处理2月份,支持闰年)

我司的系统里最近发现了一个神奇的现象: 呵呵呵呵呵。。。。。 我们用的是jQuery.maskedinput这个插件,插件本身只是为了约束格式,并不做validation。所以我们必须自己搞定。思路很简单,插件提供了completed事件,所以只要在用户输入完成后验证字符串是否为合法日期。重点是一个正则表达式。 用大微软的bing搜索后发现了一个支持mm/dd/yyyy并可以验证闰年的正则: ^((0[13578]|1[02])[\/.]31[\/.](18|19|20)[0-9]{2})|((01|0[3-9]|1[1-2])[\/.](29|30)[\/.](18|19|20)[0...

jQueryRegExDate

Fine Uploader 3.0 如何知道所有文件都已上传完毕

最近的项目里用到了Fine Uploader,最新版本是3.0。(原先叫做valums file uploader)。它的官网是:https://github.com/valums/file-uploader,下载在:https://github.com/valums/file-uploader/wiki/Releases。详细文档在GitHub:https://github.com/valums/file-uploader。 我们的一个需求是不能选择完文件后立即上传,而要手动去触发,并且,在上传完毕后,我要得到一个消息,以便下一步处理。但在官网的例子里没有这样的demo。所以我自己开荒了一下。...

jQueryFineUploader

ASP.NET Web API接受JSON格式复杂对象(嵌套)

上礼拜在公司开荒Web API,被爆出翔了。遇到个具体问题是这样的:Web API中的方法接受的参数是个复杂对象,这个对象里嵌套了另一个对象。但使用API的人不知道如何在JSON里传递复杂对象给Web API。大家一起爆了很久,尝试了各种写法,还是没能解决。 今天我突然想到一个办法,可以获取正确的Nested JSON字符串。并且开荒成功了。与大家分享: 首先,我写的例子是这样的,Product对象里嵌套了一个Category对象,AddProduct的方法接受的是Product对象,我不仅需要Product的信息,也需要被嵌套的Category的信息: [HttpPost] public...

ASP.NETjQueryJsonWeb API

ASP.NET MVC3如何用JQuery传递数组(集合)类型参数给JsonResult Action

今天在码新版博客的一个功能,有个细节就是要将一个表格里选中的Id传给后台Action。原先用Form做Post的话,这是非常好实现的,然而现在我要用AJAX完成传递,并且网页上没有Form,所以我也不能用Ajax.BeginForm,肿么办呢?经过一番开荒,我终于把它码出来了。 后台Action是个返回JsonResult的方法,签名如下: public JsonResult ExportSelectedPosts(List selectedIds) 用string集合是因为手写AJAX是不走MVC的model bind的,所以通过网页传递过来的数据只能是string。如果这个方法不加sel...

ArrayjQueryJsonJsonResultMVC

JQuery搞定SyntaxHighlighter v3.x长代码自动换行

长代码换行是SyntaxHighlighter3.0版本之前的功能,但3.0之后就木了,草草草草艹!本人认为主要猿因是gutter(代码行号指示器)的换行难做。因为3.x版是将代码行号和代码部分分开生成HTML的,猿来的老版本是在一起的。这样做是便于直接复制代码,而不会复制到行号上去。 很多人都在想办法让它实现换行,但都卡在代码行号的问题上。我关注这个问题已经差不多一年了,今天终于有了个比较漂亮的解决办法。 首先,强制给代码部分换行的CSS还是要写的: body .syntaxhighlighter .line { white-space: pre-wrap !important...

jQuerySyntaxHighlighter

JQuery文本框自动完成,通过AJAX调用ASP.NET WebService

最近在搞博客搜索框的自动完成功能,用的是JQuery UI里的autocomplete插件。插件的数据源是用AJAX调用一个WebService,网站后台有个标签库,WebService返回的是符合条件的标签。最终效果如下: 我们先来看WebService的代码,方法很简单: [WebMethod] public List GetAllTagsForAutoComplete(string tagName) { return optTag.GetModelList().Where(p = p.Name.ToLower().StartsWith(tagName.ToLower()...

AJAXASP.NETAutoCompletejQueryWebService

Firefox中强制单元格内容换行

今天在改网站后台的一个表格,里面有个MD5字段,由于页面宽度有限,表格需要换行。于是我给单元格加了如下的规则: word-wrap: break-word; width: 120px;  结果IE里是好的: Firefox中没有任何变化: 后来发现需要给表格(table)元素加个属性: table-layout: fixed;  现在,Firefox下,表格的单元格就可以自动换行了,不过和IE的效果还是稍微有点差别,有些细节的兼容问题避免不了: table-layout属性在W3C的说明中如下: The table-layout property controls t...

CSS单元格

ASP.NET中用Ctrl+S触发按钮事件

这个也是上礼拜印度队友给我留的“作业”,今天搞定了。场景是某个页面,用户输入内容后,希望按Ctrl+S直接提交保存。也就是要用Ctrl+S去触发保存按钮的Click事件。然而在浏览器中,Ctrl+S默认是保存网页(Firefox下就是这样),所以需要写一个可以覆盖浏览器自身快捷键的脚本,去触发按钮事件。 我写了个最简单的Demo,效果如下:点击Button后,会显示一句话以及触发时间。现在需要用Ctrl+S来触发这个事件。注意,先得引入JQuery库。 第一种方法是: $(window).keypress(function (event) { if (!(event.which...

ASP.NETjQuery

HTML5学习小结

前段时间公司培训了几次HTML5,虽然我还没有实际应用过,但看着好像很厉害的样子!下面总结一下初步的学习收获。 一、更改的标签 HTML5的DOCTYPE标记和以前不一样了。现在只需要一个“”就完成了。文字编码和以往类似,写在meta标签里。如果要让屏幕阅读器等设备知道网站所采用的语言,就在html标记后面加个lang属性,比如“”。一个最简单的结构如下: Fuck with HTML5 如果要引入CSS和Javascript,也和以前稍有不同,HTML5是这样引用的: 注意,script标记不再有l...

HTML5