无可奈何的开始了jquery的“奇淫技巧”
转载请注明出处: 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的“奇淫技巧”的更多相关文章
- javascript之奇淫技巧
最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~ //为兼容ie的模拟Object.keys() Object.showkeys = function(obj) ...
- 优化DP的奇淫技巧
DP是搞OI不可不学的算法.一些丧心病狂的出题人不满足于裸的DP,一定要加上优化才能A掉. 故下面记录一些优化DP的奇淫技巧. OJ 1326 裸的状态方程很好推. f[i]=max(f[j]+sum ...
- 12个实用的 Javascript 奇淫技巧
这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...
- NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)
NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...
- NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识
NGINX的奇淫技巧 —— 3. 不同域名输出不同伺服器标识 ARGUS 1月13日 发布 推荐 0 推荐 收藏 6 收藏,707 浏览 大家或许会有这种奇葩的需求...要是同一台主机上, 需要针对不 ...
- NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)
NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...
- Zepto源码分析(二)奇淫技巧总结
Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...
- Gradle更小、更快构建APP的奇淫技巧
本文已获得原作者授权同意,翻译以及转载原文链接:Build your Android app Faster and Smaller than ever作者:Jirawatee译文链接:Gradle更小 ...
- BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&树状数组
点我看题 这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ 于是悄悄咪咪翻开题解了. 实际上两个数组可以看做一个数组 如 ...
随机推荐
- flask 初学1
py 文件中 from flask import Flask,redirect,request,url_for,jsonifyfrom Flask_5.config import Config fro ...
- Git 在webstrom上安装git
Git下载地址:https://git-scm.com/download/win 用webstorm迁入迁出代码时,首先要先下载git,网址一搜就可以搜到,然后开始配置webstorm,打开webst ...
- SpringBoot端口和访问路径
更改启动端口:在application.properties配置文件中修改server.port=9090 更改项目访问路径:在application.properties配置文件中修改server. ...
- Django 之缓存
一.缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcac ...
- You are my brother
问题 : You are my brother 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Little A gets to know a new friend, Little B, ...
- 部署MySQL5.7时的权限问题
本周部署MySQL5.7的时候遇到这样的问题,在初始化的时候,总是失败,并且报错: 2019-01-09T09:47:13.957685Z 0 [ERROR] InnoDB: Operating sy ...
- jQuery 常用的方法
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...
- 如何让谷歌浏览器支持跨域访问(AJAX) AJAX调试跨域接口
以谷歌最新版本为例(2018) 1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData 2.在属性页面中的目标输入框里加上 --disable-web-security -- ...
- 饮冰三年-人工智能-Python-15Python基础之文件处理
# 写文件--开始 f=open('test','w',encoding="utf-8") #如果有则写,没有就创建 print(f.writable()) #True f.wri ...
- Java+selenium之WebDriver模拟鼠标键盘操作(六)
org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行 ...