我使用https://github.com/CakeDC/TinyMCE下载插件,并按照所有步骤集成到我的cakePHP项目中。所以现在,所有textarea都成功地改为tinyMCE编辑器
但是,当点击“提交”提交表单时, 页面无法提交和发布数据 。如果没有加载编辑器,我的表单可以提交和发布数据。
有任何jquery问题吗?请告诉我。
谢谢。Bootsrab.php
CakePlugin::load('TinyMCE');
Configure::write('TinyMCE.editorOptions', array('width' => '500px','height'=>'250px' ));
控制器:
public $helpers=array('Html','Form','TinyMCE.TinyMCE');
查看:
$this->TinyMCE->editor(array('theme' => 'advanced', 'mode' => 'textareas'));
echo $this->Form->input('user_requirements',array('required'=>true) );
布局:默认 loding js file:
echo $this->Html->script(array('ddsmoothmenu','jquery-1.7.1.min','jquery-ui-1.8.17.custom.min'));
答案 0 :(得分:1)
您已将字段设置为required
,因此您遇到的问题可能是基于浏览器的表单验证。
问题是验证在之前应用 TinyMCE将内容注入textarea,因此当textarea为空时验证将始终失败。这是一个众所周知的" bug"顺便说一句:
http://www.tinymce.com/develop/bugtracker_view.php?id=4768 http://www.tinymce.com/develop/bugtracker_view.php?id=5671
在Firefox中,您可能会注意到一个出现的验证泡泡"背后"例如,屏幕左下角的浏览器会在Chrome中出现以下错误:" 名称为' ...&#39的无效表单控件;无法集中精力 "。
快速而肮脏的修复方法是将required
设置为false
。为了在生成的容器required
上保留div
类,您必须使用div
选项手动设置它:
'div' => array('class' => 'input text required')
还可以通过在表单上定义novalidate
属性来完全禁用浏览器验证:
$this->Form->create('ModelName', array('novalidate' => true));
或使用提交按钮上的formnovalidate
属性:
$this->Form->submit('Submit', array('formnovalidate' => true));
从理论上讲,也可以收听invalid
事件并显示自定义验证气泡,但问题是浏览器行为不一致,即在Chrome中无法验证不可见(使用display
或visibility
)字段。此外,textarea字段中的内容仍然缺失。
似乎有用的是使用opacity
来隐藏字段,这样可以将textarea放在编辑器下面,并且验证气泡将正确显示。但是,当按 Enter 并单击提交按钮时(或者使用正确的编辑器更改事件可能更简单),还需要手动在textarea中注入编辑器内容。我稍后会看看能否为此提出一个例子。
更新:我已经以TinyMCE 4.x插件的形式实现了修复/解决方法,因为这也困扰了我自己的一些应用程序,请参阅{{3} }