0

如何使用 jQuery 在模糊上验证 joomla 默认文本编辑器?

这是我用来获取文本编辑器的代码。例如,在 /models/forms/newsitem.xml 中:

    <field name="description" type="editor" buttons="true" 
                   hide="pagebreak,readmore,article,image"
                   class="inputbox required"
                   filter="JComponentHelper::filterText"
                   label="JGLOBAL_DESCRIPTION" 
                   description="COM_NEWSITEMS_FIELD_DESCRIPTION_DESC" required="true" />

第二个文件 (/views/.../edit.php) - 添加到 javascript 中的新对象是什么?

<script type="text/javascript">
    Joomla.submitbutton = function(task) {
        if (task == 'newsitem.cancel' || document.formvalidator.isValid(document.id('newsitem-form'))) {
            <?php echo $this->form->getField('description')->save(); ?>
            Joomla.submitform(task, document.getElementById('newsitem-form'));
        } else {
            alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
        }
    }
</script>

我想要的是我想在文本编辑器旁边显示一条警告消息,说“你不能把这个留空”。我可以在表单提交中做到这一点,但真正的挑战是如何在模糊中做到这一点。

4

2 回答 2

0

如果表单中只有编辑器,则此代码document.formvalidator.isValid(document.id('newsitem-form'))将验证您的表单,您可以试试这个 -

jQuery('#editorid').blur(function() {
  if(!document.formvalidator.isValid(document.id('newsitem-form'))){
    //Add your error message code 

  }
});

更新:-

jQuery(jQuery('iframe')[0].contentWindow).blur(function() {
 var editor_text = jQuery('iframe').contents().find('body').text();
 if(editor_text=='')alert('Error message');
});

注意:-使用指向编辑器 iframe 的有效选择器,这仅在有一个编辑器时才有效

希望这会有所帮助。

于 2013-02-15T14:07:03.257 回答
0

我懂了。更改了答案(登录- Irfan),但应该是 - 如果单击“保存”,则编辑器会显示错误(空文本)。这是一个例子:

<script type="text/javascript">    
    Joomla.submitbutton = function(task) {
        if (task == 'newsitem.cancel' || document.formvalidator.isValid(document.id('newsitem-form'))) {
          if(task != 'newsitem.cancel') {
            var boolSubmit = true;
            if(jQuery('#jform_description_parent').is(':visible')) {
                jQuery(jQuery('#jform_description_parent iframe')[0].contentWindow).each(function() {
                    var editor_text = jQuery('#jform_description_parent iframe').contents().find('body').text();
                    if(editor_text=='') {
                        alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
                        boolSubmit = false
                    }
                });
            } else {
                jQuery('textarea#jform_description').each(function() {
                    if(jQuery(this).val()=='') {
                        alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
                        boolSubmit = false;
                    }
                });
            }
            if(!boolSubmit)
               return boolSubmit;
          }
          <?php echo $this->form->getField('description')->save(); ?>            
          Joomla.submitform(task, document.getElementById('newsitem-form'));
        } else {
            alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
        }
    }
</script>

好吧结论?我认为这可能没问题。

于 2013-02-19T08:27:39.903 回答