zoukankan      html  css  js  c++  java
  • jquery validate中groups,errorPlacement和success共用bug

    jquery validate的文档http://docs.jquery.com/Plugins/Validation/validate#toptions

    groups就是把若干的文本框,形成一个组,此组可以有统一的错误提示,组中的元素不论哪个没有通过都会显示错误

    success是验证通过后可以执行一些东西,比如显示OK

    根据文档中的groups和success提供的示例代码

       1: $("#myform").validate({
       2:   groups: {
       3:     username: "fname lname"
       4:   },
       5:   errorPlacement: function(error, element) {
       6:      if (element.attr("name") == "fname" 
       7:                  || element.attr("name") == "lname" )
       8:        error.insertAfter("#lastname");
       9:      else
      10:        error.insertAfter(element);
      11:    },
      12:    debug:true
      13:  })
       1: $("#myform").validate({
       2:    success: function(label) {
       3:      label.addClass("valid").text("Ok!")
       4:    },
       5:    submitHandler: function() { alert("Submitted!") }
       6: })

    当同时使用这两者的时候,组中的某一个元素验证通过了,就会执行success中的东西,错误提示变成了OK,这显然是不对的。

    遗憾的是success中,只提供了label参数,label就是显示错误或正确信息的地方,而没有提供element,无法获得是那个文本框触发了success

    临时的解决办法:

    jquery.validate.js中(mvc自带),623行

    showLabel: function(element, message)

    showLabel中调用了success,showLabel在被调用时传入了element

    修改651行

    : this.settings.success( label );

    改为

    : this.settings.success( label,element);

    这样可以在自己设置的success中通过element获取是那个文本框触发了success,然后判断是否在组中,组中其他元素是否有错误等等

    希望validate能够有更好的改进

  • 相关阅读:
    开发趋势
    常用的meta
    meta基础
    HTTP请求方法GET和POST
    same-origin policy----wikipedia
    跨域——同源策略(译)
    DNS问答
    TCP/IP的整理
    鉴权方法
    Web攻击技术---OWASP top
  • 原文地址:https://www.cnblogs.com/czcz1024/p/2221055.html
Copyright © 2011-2022 走看看