V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jtam
V2EX  ›  JavaScript

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

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

    用 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 事件就行了。
    leeyuzhe
        8
    leeyuzhe  
       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   ·   实用小工具   ·   5109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:34 · PVG 17:34 · LAX 01:34 · JFK 04:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.