有偿求助,注册页面的图形验证码刷新 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
jtam
149.9D
7.13D
V2EX    Javascript

有偿求助,注册页面的图形验证码刷新

  •  
  •   jtam 2015-08-26 10:01:54 +08:00 6157 次点击
    这是一个创建于 3775 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 ecstore 搭建的网店,注册页面如下图:
    http://i.imgur.com/PZb51vQ.png

    如果输入了错误的图形验证码并点击“获取短信验证码”,原来的图形验证码不会自动刷新,短信平台商说这样不科学,不给提供发短信服务。

    所以求懂前端童鞋帮忙处理一下这个问题,移动端注册页面也有同样的需求,理论上可以同理一并解决,搞定之后会有一些现金感谢。

    网址就不贴了,有兴趣的童鞋请加我微信 yixtan 了解更多。

    第 1 条附言    2015-08-26 10:50:06 +08:00
    我 js 0 基础,你们说的我都不懂,300 现金求愿意动手的童鞋帮个忙,有兴趣的请加微信。
    第 2 条附言    2015-08-26 11:03:44 +08:00
    29 条回复    2015-08-26 16:12:13 +08:00
    zhantss
        1
    zhantss  
       2015-08-26 10:33:37 +08:00
    发送短信请求前 ajax 验证下验证码 失败刷新验证码图片 成功继续发送短信请求
    不难啊 难道我理解错了?
    yangqi
        2
    yangqi  
       2015-08-26 10:35:51 +08:00
    目前的验证码点击会刷新不?这样的话短信验证失败后, js 模拟点击验证码不就可以了。如果现在的验证码也不能刷新,那当我没说
    jtam
        3
    jtam  
    OP
       2015-08-26 10:41:31 +08:00
    @yangqi 手工点击验证码可以刷新,问题出在我不懂怎么 js 模拟点击。
    jtam
        4
    jtam  
    OP
       2015-08-26 10:41:59 +08:00
    @zhantss 我也认为不难,但是我不懂 js 。
    invite
        5
    invite  
       2015-08-26 10:43:31 +08:00
    看不到图片。
    fwings260
        6
    fwings260  
       2015-08-26 10:45:18 +08:00
    可以绑定一个失焦事件,采集你验证码输入框的文本用 ajax 发送后台验证,如果错误提示框显示“验证码错误”刷新验证码呗
    或者可以直接表单提交,如果验证不通过(不管验证码还是密码)统统重新生成验证码发过来不就好了么
    zi
        7
    zi  
       2015-08-26 10:46:28 +08:00
    jquery 的话, trigger 一下验证码的 click 事件就行了。
    ThisDay
        8
    ThisDay  
       2015-08-26 10:52:14 +08:00   2
    你直接贴代码,免费就帮你解决了,你这样扭扭捏捏,出 300 块也不一定有人干
    jtam
        9
    jtam  
    OP
       2015-08-26 10:53:51 +08:00
    @leeyuzhe 真的不是扭捏,是我实在不知道该贴哪一段代码,发网站又好像在做广告
    Moker
        10
    Moker  
       2015-08-26 10:55:49 +08:00
    最后发个链接出来好测试
    zonghua
        11
    zonghua  
       2015-08-26 10:59:53 +08:00 via iPhone
    外联的元素不用 ajax ,你用 Javascript 更改一下 img 的 url 就行,随机加一个 Date.now 或者 Math.random ()都可以,浏览器就会去请求
    Moker
        12
    Moker  
       2015-08-26 11:09:33 +08:00
    表示没看到获取短信验证码的东西
    ljcarsenal
        13
    ljcarsenal  
       2015-08-26 11:10:09 +08:00
    现在不是可以了么
    jtam
        14
    jtam  
    OP
       2015-08-26 11:10:15 +08:00
    @Moker 用户名填一个手机号码,就看到了
    loading
        15
    loading  
       2015-08-26 11:14:55 +08:00 via Android
    如果被免费解决,建议将 300 元改成红包,贴这里,大家抢一下 233
    zikkeung
        16
    zikkeung  
       2015-08-26 11:20:13 +08:00
    300 快我来了
    jtam
        17
    jtam  
    OP
       2015-08-26 11:24:50 +08:00
    @ljcarsenal 输一个错的图形验证码,提示错误之后还是原来的码,运营商说这样不行,要刷新一次。
    Moker
        18
    Moker  
       2015-08-26 11:25:07 +08:00
    @loading 这个提议好

    @zikkeung 快点发红包
    ljcarsenal
        19
    ljcarsenal  
       2015-08-26 11:32:40 +08:00
    为什么我这边不是 我输入的是错误的,提示之后就换了
    Moker
        20
    Moker  
       2015-08-26 11:36:10 +08:00
    看了下代码大概在#298
    对返回的错误时 修改一下图片的 src 属性
    jtam
        21
    jtam  
    OP
       2015-08-26 11:49:27 +08:00
    @loading 这里如何贴红包?
    b821025551b
        22
    b821025551b  
       2015-08-26 11:53:39 +08:00
    trigger 一下“看不清楚?换一个”
    colonel
        23
    colonel  
       2015-08-26 11:57:18 +08:00   1
    passport-signup.html

    function sendVerify (el, data ) {
    var url = el.href;
    var textCOnt= el.getElement ('span span');
    el.addClass ('disabled');
    textCont.innerHTML = el.get ('text') + '(<i>0</i>)';
    var cd = new countdown (textCont.getElement ('i'), {
    start: 120,
    secondOnly: true,
    callback: function (e ) {
    el.removeClass ('disabled');
    textCont.innerHTML = '重发验证码';
    }
    });
    Query.send (url, el, data, function (rs ) {
    if (rs.error ) {
    changeCode (Module.element (modname, 'img.auto-change-verify-handle'));
    cd.stop ();
    el.removeClass ('disabled');
    textCont.innerHTML = '重发验证码';
    }
    });
    }
    Paranoid
        24
    Paranoid  
       2015-08-26 12:52:31 +08:00   1
    手机界面 可以这样   手机界面还验证码本身就有 bug
    sendVerify 函数 rs.error 后面+上下面 3 行 ( FF +chrome 测试过)  
    var newImage = new Image ();
    newImage.src = $(".auto-change-verify-handle").attr ("src")+"?time="+new Date ();
    $(".auto-change-verify-handle").attr ('src', newImage.src );
    Paranoid
        25
    Paranoid  
       2015-08-26 12:52:52 +08:00
    手机界面换验证码本身就有 bug
    jtam
        26
    jtam  
    OP
       2015-08-26 13:38:50 +08:00
    感谢第一位和第二位加我微信并帮我完美解决问题的两位同学。
    同时也感谢其他在本贴中提供方法和思路的好同学们。
    wd0g
        27
    wd0g  
       2015-08-26 13:42:05 +08:00
    来晚了,我的 300 红包啊
    pysama
        28
    pysama  
       2015-08-26 15:19:21 +08:00
    来晚了。哈哈哈
    在“点击获取短信验证码”的时候先 ajax 校验验证码是否正确,如果不正确,执行刷新验证码的方法(不一定要想到去模拟点击)
    xifangczy
        29
    xifangczy  
       2015-08-26 16:12:13 +08:00 via Android
    模拟点击。。和不刷新有什么区别.. 禁止 JS 后不一样没效果。。又多一个短信轰炸接口。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5601 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 02:24 PVG 10:24 LAX 18:24 JFK 21:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86