cart55free9912 2014-01-13 09:38 采纳率: 0%
浏览 18037

jQuery.validate errorPlacement和success共用有问题

jQuery.validate errorPlacement和success共用有问题
使用了success后呢 不论验证通过还是没有通过 errorPlacement都会被触发...
而且是先触发errorPlacement函数 再触发success函数
去掉success就很正常 只有出错时才会触发errorPlacement

这里是官方文档 http://jqueryvalidation.org/validate#errorPlacment
没看到这里说他们有冲突啊

另外我还参考了http://blog.51yip.com/jsjquery/1206.html

这是我的代码 不知道哪里有问题呢

<div id="em"></div>
<form id="signup-form" action="/account/signup" method="post" class="common-form">

    <div id="yui_3_12_0_1_1389079738187_71"
        class="field-group field-group--password">
        <label for="signup-password">创建密码</label> <input name="password"
            id="password" class="f-text" autocomplete="off" type="password">
    </div>
    <div id="yui_3_12_0_1_1389079738187_73" class="field-group">
        <label for="password2">确认密码</label> <input name="password2"
            id="password2" class="f-text" autocomplete="off" type="password">
    </div>

    <div class="field-group operate">
        <input class="btn" name="commit" value="同意以下协议并注册" type="submit">
    </div>
</form>




$(function() {
$("#signup-form").validate({
    errorElement : "span",
    //失去焦点时验证
    onfocusout : function(element) {
        $(element).valid();
    },
    onkeyup : false,
    focusInvalid : false,
    rules : {
        password : {
            required : true,
            minlength : 5
        },
        password2 : {
            required : true,
            minlength : 5,
            equalTo : "#password"
        }

    },
    messages : {
        password : {
            required : "请输入密码",
            minlength : jQuery.format("密码不能小于{0}个字 符")
        },
        password2 : {
            required : "请输入确认密码",
            minlength : "确认密码不能小于5个字符",
            equalTo : "两次输入密码不一致不一致"
        }
    },
    success:function(element){
        $("#em").text($("#em").text()+'success');
    },
    errorPlacement : function(error, element) {
        //error是错误提示元素span对象  element是触发错误的input对象
        //发现即使通过验证 本方法仍被触发
        //当通过验证时 error是一个内容为空的span元素
        $("#em").text($("#em").text() + "error value is " + error.text());
        element.nextAll('span').remove();
        error.insertAfter(element);

    }
});});
  • 写回答

7条回答

  • anan按 2014-01-13 09:50
    关注

    我也遇到过 可能是语句有错误 你再好好检查下 ,编译通过不代表没错

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿