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" />

そして 2 番目のファイル (/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を指す有効なセレクターを使用します。これは、エディターが1つある場合にのみ機能します。

これがお役に立てば幸いです。

于 2013-02-15T14:07:03.257 に答える
0

私はそれを持っている。回答を変更しました (login- 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 に答える