【问题标题】:How to validate wysiwyg editor using bootstrap validation如何使用引导验证验证所见即所得编辑器
【发布时间】:2015-11-20 07:23:13
【问题描述】:

使用

bootstrap3-wysihtml5-bower 2013-11-22(所见即所得编辑器)

BootstrapValidator v0.5.2

使用引导验证验证 textarea(bootstrap-wysihtml5 编辑器)。只需勾选 NotEmptyMax Characters 然后提交表单。

目前尝试过

$('#setpolicyform').bootstrapValidator({
  message: 'This value is not valid',
  feedbackIcons: {
    valid: 'glyphicon glyphicon-ok',
    invalid: 'glyphicon glyphicon-remove',
    validating: 'glyphicon glyphicon-refresh'
  },
  ignore: ":hidden:not(textarea)",
  fields: {
    policyta: {
      group: '.lnbrd',
      validators: {
        notEmpty: {
          message: 'Textarea cannot be empty'
        }
      }
    }
  }
}).on('success.form.bv', function(e) {
  e.preventDefault();
  var $form = $("#setpolicyform"),
    $url = $form.attr('action');
  $.post($url, $form.serialize()).done(function(dte) {
    $("#policy-content").html(dte);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form role="form" method="POST" action="self.php" name="setpolicyform" id="setpolicyform">
  <div class='box-body pad'>
    <div class="form-group">
      <div class="lnbrd">
        <textarea class="form-control textarea" name="policyta" placeholder="Place some text here" style="width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
      </div>
    </div>
  </div>
  <div class="box-footer clearfix">
    <button type="submit" class="btn btn-danger pull-right" id="setpolicyformsubmitbtn"><i class="fa fa-save"></i>&nbsp;SAVE</button>
  </div>
</form>

JSFiddle https://jsfiddle.net/v6s0726L/1/

【问题讨论】:

  • 我迷路了。从我所见,所见即所得的工具并非毫无价值。也许我做错了。不知道为什么你甚至想提到它。而且代码 sn-p 的东西似乎也不值多少钱。一个简单的 JS 小提琴如何向我们展示你的尝试。
  • 我正在尝试了解您使用的是什么工具。对于 bootstrapvalidator() 我看到 This repository is for anyone who still use the BootstrapValidator. It's no longer supported. Please upgrade to use FormValidation. formvalidation.io
  • @zipzit 在问题中找到 JS Fiddle(已更新)。我正在使用核心 php(没有工具)。它是我的客户项目的更新(部分)(不是从头开始做的)。感谢您尝试理解问题。
  • @zipzit 我需要在提交表单之前检查 textarea 'not Empty'。

标签: javascript jquery html bootstrap-wysiwyg bootstrapvalidator


【解决方案1】:

伙计们,bootstrapValidator 已升级为 formValidation。如果您使用的是 formValidation 的更新版本,您可以这样做而不是添加单独的类来隐藏文本区域:

   $('#setpolicyform').formValidation({
                                framework: 'bootstrap',
                                excluded: [':disabled'], /* This will do the trick of validating for notEmpty*/
                                icon : {
                                    valid : '',
                                    invalid : '',
                                    validating : 'glyphicon glyphicon-refresh'
                                },
                                fields: {
                                 policyta: {
                                  group: '.lnbrd',
                                  validators: {
                                   notEmpty: {
                                   message: 'Textarea cannot be empty'
                                   },
                                   stringLength: {
                                    max: 50,
                                   message: 'Maximum 50 Characters Required'
                               }
                            }
                         }
                      }
        });

$('.textarea').wysihtml5({
        events: {
            change: function () {
                $('#setpolicyform').formValidation('revalidateField', 'policyta');
        }
    }
});

谢谢

【讨论】:

    【解决方案2】:

    有一种方法可以验证WYSIWYG Editor,原因是bootstrapValidator 没有验证它,因为在textarea name="policyta" 上初始化WYSIWYG Editor 后,它将被bootstrapValidator 隐藏和忽略

    所以一种方法是不要隐藏textarea,只需设置z-index: -1,它会在WYSIWYG Editor后面,使用WYSIWYG Editoreventload在初始化后添加CSS,

    CSS

    .textnothide {
        display: block !important;
        position: absolute;
        z-index: -1;
    }
    

    JS

    $('.textarea').wysihtml5({
        events: {
            load: function () {
                $('.textarea').addClass('textnothide');
            }
        }
    });
    

    现在让我们使用 bootstrapValidator 验证 textarea 并且您还要求 Max Characters 限制

    第一个bootstrapValidator 脚本

    $('#setpolicyform').bootstrapValidator({
        message: 'This value is not valid',
        //ignore: ":hidden:not(textarea)", //<---- No Need of This
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            policyta: {
                group: '.lnbrd',
                validators: {
                    notEmpty: {
                        message: 'Textarea cannot be empty'
                    },
                    stringLength: { //<- Limit Maximum Character(s)
                        max: 50,
                        message: 'Maximum 50 Characters Required'
                    }
                }
            }
        }
    });
    

    现在让我们使用 bootstrapValidator 检查和验证 textarea,需要另一个 wysihtml5 事件 change 来检查更改并重新验证

    change: function () {
        $('#setpolicyform').bootstrapValidator('revalidateField', 'policyta');
    }
    

    所以最终脚本将是

    $(document).ready(function () {
        $('#setpolicyform').bootstrapValidator({
            message: 'This value is not valid'
            feedbackIcons: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                policyta: {
                    group: '.lnbrd',
                    validators: {
                        notEmpty: {
                            message: 'Textarea cannot be empty'
                        },
                        stringLength: {
                            max: 50,
                            message: 'Maximum 50 Characters Required'
                        }
                    }
                }
            }
        });
        $('.textarea').wysihtml5({
            events: {
                load: function () {
                    $('.textarea').addClass('textnothide');
                },
                change: function () {
                    $('#setpolicyform').bootstrapValidator('revalidateField', 'policyta');
                }
            }
        });
    });
    

    Fiddle Working Example

    【讨论】:

    • 保持按钮启用$('#setpolicyform').bootstrapValidator({// validation code}).on('error.field.bv', function(e, data) {if (data.bv.getSubmitButton()) {data.bv.disableSubmitButtons(false);}});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多