2 回答
TA贡献1884条经验 获得超4个赞
jq的keyup或者change是怎么读取识别input的字符的,里面的机制是什么样的,既然能被前端读取,你们就意味着可以截获?还是浏览器内部识别的?
这个是JavaScript实现的功能。当然就可以通过js来获取。
基本上,前端用户输入校验都是通过ajax实现的,一般来说分成以下两种
实时检测
实时检测一般是由前端js负责,最后输入框失去焦点时通过ajax请求服务端检测。这样既能实时化,也不会对服务端造成压力。实现方式:change
+blur
事件。失焦检测
当光标从输入框离开时,通过ajax请求服务端检测。服务端压力小,缺点是不能实时检测。实现方式:blur
事件。
以上两种方式,只是对于一般用户的提示。
安全性永远不会通过客户端来保证,交互开发有一条准则是一定要遵守的:永远不要信任用户的输入。
不论是什么样的输入,最后提交到服务端,都要由服务端完成校验。
TA贡献1821条经验 获得超4个赞
不知道你说的安全性指的是什么,是指通过前端校验用户的输入来保证站点安全的能力吗?
对于服务器端来说,正确的做法是所有前端传入的参数都不应该被信任。或者说,前端对用户输入的校验做的再严格再合理,传入到服务器端时,服务器端都要对传入的数据重新进行校验。或者你可以理解成,前端校验的目的不是为站点安全保驾护航的,其主要目的是为用户服务为了提高用户体验的。
keyup
、change
、blur
等在实际开发过程中都有使用的,具体选用哪个事件进行监听是根据你具体的校验目的决定的。keyup
相较于change
、blur
更具有实时性,可以快速针对用户的输入进行校验或判断。如在注册表单中,设置登录密码,可以通过监听该事件快速实现对密码强度的判断并展示给用户,提醒用户增加密码强度。但是实时性可能并不是最好的,还拿注册表单举例子。在校验用户账户名是否存在时,如果监听keyup
,用户刚按下按键就进行判断,则前端页面会在用户输入过程中向服务器发送大量的请求,这会对服务器端造成较大的不必要的压力、同时也会消耗大量的客户端的资源、甚至造成表单校验的不可控。这时监听change
或blur
事件就显得更为合理。
添加回答
举报