相同表单组的JQuery验证和Bootstrap 3-每个字段的错误和成功类

gamehendgeVA

我有一个Bootstrap 3表单,其中并排有2个字段(例如,名字和姓氏),为了通过BS3实现此目的,我将两个字段都放在同一个表单组div中,伟大的。

但是,使用我正在使用的jQuery Validate脚本(v1.13.1),它会基于表单组向字段添加has-error和has-success样式,因此,如果其中一个字段是has-error(例如,First名称),那么当这两个字段只是应该具有该类的字段之一时,这两个字段都将显示has-error样式(名字和姓氏)。

我找到了一个正确的解决方案,但仍然无法解决问题:同一表单组的JQuery验证和Bootstrap 3此代码不起作用,但是您可以看到它在正确的路径上我要尝试执行的操作...基本上,为同一个表单组中的2个不同字段分离出has-error和has-success样式(突出显示与不突出显示)。

这是我的简化表单HTML:

<form class="form-horizontal" name="paymentInformation" id="paymentInformation" action="verifyOrder.cfm" method="post" role="form">
<div class="form-group">
  <label for="firstname" class="col-sm-2 control-label">First Name</label>  
  <div class="col-sm-4">
  <input id="firstname" name="firstname" placeholder="First Name" class="form-control input-md" type="text" autofocus>
  </div>
  <label for="lastname" class="col-sm-2 control-label">Last Name</label>  
  <div class="col-sm-4">
  <input id="lastname" name="lastname" placeholder="Last Name" class="form-control input-md" type="text">
  </div>
</div>
<input type="submit" value="PROCEED TO THE NEXT STEP &#xf054;" class="blueButton">
</form>

并且,这是简化的JS(改编自带有jQuery Validation Plugin的Bootstrap 3的注释):

<script>
$.validator.setDefaults({
    errorElement: "span",
    errorClass: "help-block",
    highlight: function(element) {
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
    },
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
        error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});
$("#paymentInformation").validate({
    rules: {
        'firstname': {
            required: true,
            maxlength: 200
        },
        'lastname': {
            required: true,
            maxlength: 200
        }
    },
   messages: {
        'firstname': {
            required: "Enter your First Name.",
            maxlength: "Your First Name cannot exceed 200 characters"
        },
        'lastname': {
            required: "Enter your Last Name.",
            maxlength: "Your Last Name cannot exceed 200 characters"
        }
    }
});
</script>

可以发现错误,因为无论“名”或“姓”字段是否经过验证,然后其他字段都表明它是否经过验证(就像两个字段的绿色和红色为全有还是全无)。

这是显示问题的小提琴:http : //jsfiddle.net/gamehendgeVA/m2o6c2vj/

任何帮助是极大的赞赏!

谢谢!

阿图尔·菲律宾(Artur Filipiak)

您的两个输入都放置在单独的<div class="col-sm-4">元素内。因此,您只需替换以下行:

$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
// ...
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');

用这些:

$(element).parent().removeClass('has-success').addClass('has-error');
// ...
$(element).parent().removeClass('has-error').addClass('has-success');

..或这些(与上述相同,但与课程相关):

$(element).closest('.col-sm-4').removeClass('has-success').addClass('has-error');
// ...
$(element).closest('.col-sm-4').removeClass('has-error').addClass('has-success');

小提琴


另外,如果由于某种原因您不能影响输入父级的类,或者您不能基于父级元素(例如,您的项目正在开发中,或者经常更新),则可以确保错误/成功使用可以将class正确地应用于字段.wrap()您的字段将被包装到<span>具有正确(错误/成功)类的动态创建的元素中:

highlight: function(element) {
    $(element).parent().is('.has-success, .has-error') ? 
        $(element).parent().removeClass('has-success').addClass('has-error') : 
        $(element).wrap('<span class="has-error"></span>');
},
unhighlight: function(element) {
    $(element).parent().is('.has-success, .has-error') ? 
        $(element).parent().removeClass('has-error').addClass('has-success') : 
        $(element).wrap('<span class="has-success"></span>');
}

小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bootstrap 3按钮组和输入组成一行

来自分类Dev

jQuery和Ajax表单验证

来自分类Dev

Bootstrap 3和表单CSS技巧问题

来自分类Dev

Bootstrap 3选项卡和HTML5表单验证

来自分类Dev

jQuery通过ID和表单组进行验证

来自分类Dev

相同表单组的JQuery验证和Bootstrap 3-每个字段的错误和成功类

来自分类Dev

jQuery验证-验证具有相同名称和ID的多个表单

来自分类Dev

具有3个字段的身份验证和自定义登录表单的Spring Boot安全性

来自分类Dev

Bootstrap 3 Datepicker和DateTime验证错误

来自分类Dev

表单验证和重定向错误后重新填充字段值;验证有效,但值无效(CodeIgniter 3)

来自分类Dev

jQuery表单验证和按钮波纹

来自分类Dev

jQuery表单验证和提交

来自分类Dev

jQuery错误消息显示在每个字段上

来自分类Dev

显示模板中每个字段和模板中每个正确数据的Django表单错误

来自分类Dev

使用jquery和php验证联系表单

来自分类Dev

接触表单和z-index上的图层(Bootstrap 3)

来自分类Dev

jQuery Validation插件-使用Bootstrap 3验证单选和复选框输入的混合

来自分类Dev

如何使用jQuery加载和验证表单?

来自分类Dev

jQuery表单验证和语法

来自分类Dev

jQuery验证-验证具有相同名称和ID的多个表单

来自分类Dev

表单中每个字段仅显示1个错误

来自分类Dev

jQuery错误消息显示在每个字段上

来自分类Dev

JQuery 3和Bootstrap的自动完成

来自分类Dev

jQuery和Bootstrap输入验证

来自分类Dev

如何使用 jquery 和 bootstrap 验证已经创建的表单

来自分类Dev

symfony3 对模型和管理表单的验证相同

来自分类Dev

Jquery 帖子和 html 表单验证

来自分类Dev

Angular 6 和 Ionic 3 反应式表单验证错误不显示

来自分类Dev

Typo3 FLUID 和 Bootstrap 4“卡片组”

Related 相关文章

  1. 1

    Bootstrap 3按钮组和输入组成一行

  2. 2

    jQuery和Ajax表单验证

  3. 3

    Bootstrap 3和表单CSS技巧问题

  4. 4

    Bootstrap 3选项卡和HTML5表单验证

  5. 5

    jQuery通过ID和表单组进行验证

  6. 6

    相同表单组的JQuery验证和Bootstrap 3-每个字段的错误和成功类

  7. 7

    jQuery验证-验证具有相同名称和ID的多个表单

  8. 8

    具有3个字段的身份验证和自定义登录表单的Spring Boot安全性

  9. 9

    Bootstrap 3 Datepicker和DateTime验证错误

  10. 10

    表单验证和重定向错误后重新填充字段值;验证有效,但值无效(CodeIgniter 3)

  11. 11

    jQuery表单验证和按钮波纹

  12. 12

    jQuery表单验证和提交

  13. 13

    jQuery错误消息显示在每个字段上

  14. 14

    显示模板中每个字段和模板中每个正确数据的Django表单错误

  15. 15

    使用jquery和php验证联系表单

  16. 16

    接触表单和z-index上的图层(Bootstrap 3)

  17. 17

    jQuery Validation插件-使用Bootstrap 3验证单选和复选框输入的混合

  18. 18

    如何使用jQuery加载和验证表单?

  19. 19

    jQuery表单验证和语法

  20. 20

    jQuery验证-验证具有相同名称和ID的多个表单

  21. 21

    表单中每个字段仅显示1个错误

  22. 22

    jQuery错误消息显示在每个字段上

  23. 23

    JQuery 3和Bootstrap的自动完成

  24. 24

    jQuery和Bootstrap输入验证

  25. 25

    如何使用 jquery 和 bootstrap 验证已经创建的表单

  26. 26

    symfony3 对模型和管理表单的验证相同

  27. 27

    Jquery 帖子和 html 表单验证

  28. 28

    Angular 6 和 Ionic 3 反应式表单验证错误不显示

  29. 29

    Typo3 FLUID 和 Bootstrap 4“卡片组”

热门标签

归档