【问题标题】:Redactor JS - validate form using BootstrapValidatorRedactor JS - 使用 BootstrapValidator 验证表单
【发布时间】:2014-10-05 15:26:06
【问题描述】:

我有一个 Rails 应用程序,我在其中使用 Redactor 进行富文本输入。表单放置在 Bootstrap 模式中。我想在用户键入时验证(存在),如果该字段为空,则显示验证错误。我在验证部分使用BootstrapValidator。我目前没有收到redactor 文本区域的任何验证消息。

代码的相关部分如下所示:

= form_for idea, remote: remote, html: {role: :form, "data-model" => 'idea', multipart: true}  do |f|

  # This field  / validation works
  .form-group
    = f.label :title, "Title", :class => "required"
    = f.text_field :title, :class => "form-control"

  # This does not
  .form-group
    = f.label :description, :class => "required"
    = f.text_area :description, :class => "form-control big-text-area redactor"

Javascript 看起来像这样:

:javascript

  $('#new_idea').bootstrapValidator({
    message: 'This value is not valid',

    feedbackIcons: {
      valid: 'fa fa-check-square',
      invalid: 'fa fa-warning',
      validating: 'fa fa-circle-o-notch spin'
    },

    fields: {
      "idea[title]": {
        validators: {
          notEmpty: {
            message: 'The title is required'
          }
        }
      },

      "idea[description]": {
        validators: {
          callback: {
            message: 'The idea description is required',
            callback: function(value, validator) {

              # NOTE: This part of the code never get called                 

              var code = $('[name="idea[description]"]').code();
              return (code !== '' && code !== '<p><br></p>');
            }
          }
        }
      }
    }
  })

  $('.redactor').redactor({

    keyupCallback: function (e) {
      validateEditor();
    }
  });

  function validateEditor() {
    $('#new_idea').bootstrapValidator('revalidateField', "idea[description]");
  };

对我可以做些什么来使验证生效有什么想法吗?

【问题讨论】:

  • 你能告诉我们什么不工作吗?
  • @Nobita 我已经更新了我的问题,基本上:我目前没有收到任何编辑器文本区域的验证消息。

标签: javascript ruby-on-rails twitter-bootstrap validation redactor


【解决方案1】:

我在使用 Redactor 时遇到了类似的情况,所以也许这会有所帮助。就我而言,我在 Redactor 绑定到的 textarea 上有一个更改侦听器(与我认为 Bootstrap Validator 正在做的类似方法),但问题是 Redactor 正在吃 change 事件原始文本区域。为了解决这个问题,我在初始化 Redactor 插件时实现了以下内容。

var $mytextarea = $('selector-for-textarea');
$mytextarea.redactor({
    changeCallback: function( html ) {
        $mytextarea.trigger( 'change' );
    } 
});

希望这会有所帮助,干杯。

【讨论】:

  • 谢谢,它对我没有任何改变。我在编辑器表单中收到来自keyupCallback 的回调。像这样:keyupCallback: function (e) { console.log("It logs here"); validateEditor(); }validateEditor() 被调用。但是我的Redactor text-area 的callback: 验证永远不会被调用。
  • 其实你说对了一部分。 changeCallback 是正确的使用方法,keyupCallback 没有抓住退格键。我还必须将excluded: [], 添加到bootstrapValidator。而不是callback: function(value, validator),我使用notEmpty
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
相关资源
最近更新 更多