
最近学习 js 来填写表单。遇到一个奇怪的表单,我如果是人工输入邮箱账号,或者粘贴,都是可以通过验证。如果是通过代码填写邮箱,都显示不通过。请问这个编码是如何写验证的?如果通过 js 填表,如何绕过验证?求大神,指导。

1 finalspeed 2016-10-07 22:39:23 +08:00 via Android 可能 你看到的只是显示,还有另一个标签正真做验证 |
2 ZhaoMiing 2016-10-07 22:41:24 +08:00 目测数据层没有同步,手动触发一下 change 事件? |
3 ykrl089 2016-10-07 22:41:32 +08:00 键盘输入比对,这是我想到最简单的办法 |
4 helloccav 2016-10-07 23:01:27 +08:00 目测是 js 绑定事件的问题,通过代码输入的话无法触发相应的验证事件。 |
5 Kokororin 2016-10-07 23:09:37 +08:00 if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); element.dispatchEvent(evt); } else element.fireEvent("onchange"); |
12 ZhaoMiing 2016-10-08 00:31:36 +08:00 @hanmeimei 看了一下页面用了 react ,更改 input 的 value 时数据没有同步到对应的组件 state 里去。由于没有 jQuery 只能这样触发 change 事件了。 var event = new Event('input', { bubbles: true }); document.querySelector('#newEmail').dispatchEvent(event); |
13 jprovim 2016-10-08 05:42:00 +08:00 静观大牛的各种解法. |
14 mathcoder23 2016-10-08 08:34:19 +08:00 直接新建一个提交方便吗? |
15 indooorsman 2016-10-08 09:34:25 +08:00 via Android keyup keydown input 这些事件挨个触发一遍 |
16 Kokororin 2016-10-08 10:06:41 +08:00 测试可行,能够收到邮件,但是后端还是有做邮件地址的验证 var getCookie = function(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } fetch('https://app.meiqia.com/api/agent/agents/' + getCookie('_agent_id') + '?v=' + new Date().getTime(), { method: 'put', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: getCookie('_authenticated') }, body: JSON.stringify({ email: '[email protected]' }) }) .then(function(response) { return response.json() }) .then(function(json) { console.log(json) }) |