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 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services