转载请注明出处: https://home.cnblogs.com/u/zhiyong-ITNote/

修改一个已有的项目,主要是前端方面,一般的项目后端都是处理好了的,不需要改也不能改,除非特殊需求。然后就遇到了牛逼的代码。本来看别人已有的代码做开发就是一件很头疼的事,一个函数一个方法一个属性的找,眼睛疼....然后今天改代码还特别头疼,大概说说:
首先不能使用jquery-ui的自动补全插件,换句说话,所有的第三方模糊匹配/自动补全插件都不能用,但是给我懵的。ajax将请求post到C#后端随后获取数据,传到前端之后,一大串的数据,需要你在一个文本框中边检索边做模糊匹配,本来很好解决的一个事,直接使用jquery-ui的autocomplete就行,但是不行,就不让,我有啥办法,然后就自己想辙解决问题。没有特定的环境,我们就不会有对应的解决方法,更不会尝试去解决,最后解决它。我的方法是,监听input标签的写入事件,然后获取写入的值,将值与从后台获取到的数据进行匹配,匹配成功,再动态生成div以下拉列表的形式填充到输入框下面。但是遇到个问题,input框检索的是Name字段,不是一个字符串而是字符,就是我们的string类型——"hello world"之类的。那么应该怎么解决呢?我想到了数据结构书上的字符串匹配算法KMP,于是查了下jquery的匹配方法,果然有一个match,这就可以给我们解决问题了。通过这两个解决方案就可自定义的创建自动补全了。

还有一个问题,那就是input标签的placeholder属性需要实时变换,明明这个属性就支持你写入Input它就消失,你不写入它就存在。可以由于项目的已有代码问题,我实在是被坑的没辙,又不能改,只能加,然后就想对应的解决方法。我的解决方案是监控div:
一开始,div下嵌套着input,在input中写入的时候,就会产生上面我们的自动补全下拉框(其实就是一个动态的div),一旦我们选中了一个下拉框的元素,那么会在该div下生成一个span标签,也就是说,input的placeholder属性的值还存在,这代码设计....坑的是后来人....然后我该怎么解决?监控div就行。如果div下生成了一个span标签那么我们就是将input的placeholder设置为''.否则就设置为'必填字段'。代码拷贝不出来,因为在公司内网机上....

参考资料:
监听div的内容
字符的模糊匹配
查找span标签是否存在
动态添加div,及其显示与隐藏
input标签监听写入

根据参考资料就可以实现我上面说的那些了,具体请看具体分析。

转载请注明出处: https://home.cnblogs.com/u/zhiyong-ITNote/

无可奈何的开始了jquery的“奇淫技巧”的更多相关文章

  1. javascript之奇淫技巧

    最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~ //为兼容ie的模拟Object.keys() Object.showkeys = function(obj) ...

  2. 优化DP的奇淫技巧

    DP是搞OI不可不学的算法.一些丧心病狂的出题人不满足于裸的DP,一定要加上优化才能A掉. 故下面记录一些优化DP的奇淫技巧. OJ 1326 裸的状态方程很好推. f[i]=max(f[j]+sum ...

  3. 12个实用的 Javascript 奇淫技巧

    这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...

  4. NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)

    NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...

  5. NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识

    NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识 ARGUS 1月13日 发布 推荐 0 推荐 收藏 6 收藏,707 浏览 大家或许会有这种奇葩的需求...要是同一台主机上, 需要针对不 ...

  6. NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)

    NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...

  7. Zepto源码分析(二)奇淫技巧总结

    Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...

  8. Gradle更小、更快构建APP的奇淫技巧

    本文已获得原作者授权同意,翻译以及转载原文链接:Build your Android app Faster and Smaller than ever作者:Jirawatee译文链接:Gradle更小 ...

  9. BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&树状数组

    点我看题 这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ 于是悄悄咪咪翻开题解了. 实际上两个数组可以看做一个数组 如 ...

随机推荐

  1. 分布式通讯架构RPC简单实现

    什么是RPC: RPC(Remote Procedure Call,远程过程调用),一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远端系统资源 ...

  2. sql查询条件为空的另类写法o( ̄▽ ̄)d

    简单描述:今天看老大提交的代码,发现了一个有意思的事情,一条sql中判断条件是空,老大的写法,让我眼前一亮.直接上代码 代码: <select id="getxxxs" re ...

  3. 动手动脑——JAVA语法基础

    EnumTest.java public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Si ...

  4. 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)

    1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQL图形化界面和汉化以后(过程自己百度吧,百度more and more),登录 ...

  5. WPF多屏最大化

    如果计算机存在多个显示器,这时设置wpf窗口为最大化,窗口只能在主显示器中实现最大化,如果想要实现窗口拉伸至多屏,需要获取所有显示器分辨率之和.这时用到了System.Windows.SystemPa ...

  6. combination sum(I, II, III, IV)

    II 简单dfs vector<vector<int>> combinationSum2(vector<int>& candidates, int targ ...

  7. Spring MVC 注解

    概述   Spring MVC是一个采用依赖注入的思想编写.对象的依赖注入Bean的方式可以通过Spring XML里面配置,配置之后的Bean使用时候,无需使用New关键字建立对象.但是如果所有的B ...

  8. 【BZOJ4998】星球联盟

    题解: 应该还是比较水的 首先很容易发现的就是两个点一旦联通他们就永远联通了 所以联通之后我们就把他们之间缩成一个点

  9. Adjoint operators $T_K$ and $T_{K^{*}}$ in BEM

    In our last article, we introduced four integral operators in the boundary integral equations in BEM ...

  10. WebApi接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...