2017-07-12 65 views
4

我有一個TinyMCE的問題。在我基於CakePHP v3的應用程序中,我有一個表單來添加忠誠度任務。有一個使用tinymce來描述任務的領域。需要TinyMCE阻止發送表格

所以問題是當我用數據填寫表單並點擊提交按鈕時什麼也沒有發生。還有更多的形式來編輯任務,並且它完美地工作(完全相同)。沒有自定義JS被添加爲有問題的表單。

我知道TinyMCE帶有在textarea上的require會導致這個問題,因爲當我禁用它時,它完美地工作。

一些代碼:
TinyMCE的初始化:

tinymce.init({ 
    selector: 'textarea.tinymce', 
    height: 500, 
    plugins: [ 
     "advlist autolink link image lists charmap preview hr anchor image", 
     "wordcount visualblocks visualchars fullscreen insertdatetime nonbreaking", 
     "table paste" 
    ], 
    toolbar1: "undo redo cut copy paste | bold italic underline strikethrough subscript superscript | alignleft aligncenter alignright alignjustify | table", 
    toolbar2: "formatselect | outdent indent | bullist numlist | blockquote link unlink charmap hr image | preview", 
    menubar: false, 
    content_css: [ 
     '//www.tinymce.com/css/codepen.min.css' 
    ] 
}); 

表(除去幾個要素):

<?= $this->Form->create(null, ['enctype'=>'multipart/form-data']); ?> 
<div class="col-xs-12"> 
    <div class="form-group"> 
     <label>Tytuł</label> 
     <input type="text" name="title" class="form-control" required="required"/> 
    </div> 
</div> 
//additional elements 
<div class="col-xs-12"> 
    <div class="form-group"> 
     <label>Treść zadania</label> 
     <textarea name="task" class="form-control tinymce" required="required"></textarea> 
    </div> 
    <input type="submit" class="" value="Dodaj"/> 
</div> 
<?= $this->Form->end(); ?> 

使用TinyMCE的版本:4.6.4(最新)

+0

您的textarea不包含任何當你點擊提交,因此瀏覽器驗證踢。我認爲在這種情況下,你需要一些定製JS驗證爲發生TinyMCE的編輯器窗口。 https://stackoverflow.com/questions/16450499/form-with-tinymce-textarea-having-html5-required-attribute-cannot-submit – Morpheus

回答

0

你編輯表單可能與您的添加表單相同,但在編輯的情況下,您將在必填字段中包含一些數據,因此required選項不會導致任何專業版blems。在添加形式中存在相反的情況 - 您有空字段,驗證失敗。爲了解決這個問題,你可以從tinymce輸入中刪除required="required",並且做額外的驗證 - 無論是在客戶端的js還是在服務器上的cakephp表類中。

2

感謝您的快速回復,但我在tinymce支持論壇上找到了自己的答案。

對於其他有此問題的人:只需將下面的代碼添加到您的tinyMCE初始化中即可。

setup: function (editor) { 
    editor.on('change', function (e) { 
     editor.save(); 
    }); 
}