我正在使用jQuery的Validate插件实现客户端验证,并简要介绍了使用TinyMCE编辑器组件的表单字段。这会在我的表单字段的包含标记下呈现一个非常复杂的控制树,包括实际编辑区域的iframe
和textarea
元素。我无法直接访问textarea
,因此我在调用.validate()
之前添加了'required'属性,如下所示:
jQuery(function() {
jQuery("#wpsm_body").addClass("required");
jQuery("#wpsm-send-mail")
.validate(
{
errorContainer : "#wpsm-top-error-container, #wpsm-bottom-error-container",
errorLabelContainer : "#wpsm-top-error-container ul",
wrapper : "li",
messages : {
wpsm_from : "The message has no 'From' address. The administrator can set a default for this on the SuperMail 'Settings' page.",
wpsm_subject : "The message has no subject.",
wpsm_body : "The message has no body.",
wpsm_text : "The message has no body."
}
});
});
但是,即使空wpsm_body
我提交表单,也没有客户端验证错误。
对于背景,这是在WordPress插件中,而TinyMCE由wp_editor
函数呈现,虽然我怀疑这会产生太多差异。
已添加虽然我认为这根本不会有什么帮助,但这里是向浏览器呈现的HTML。在此之后由TinyMCE生成的HTML长度为400行,并且不相关。
<form id="wpsm-send-mail" action="theform.php" method="POST" enctype="multipart/form-data">
<div id="wp-wpsm_body-wrap" class="wp-editor-wrap tmce-active">
<link rel='stylesheet' id='editor-buttons-css' href='http://localhost/wordpress/wp-includes/css/editor-buttons.dev.css?ver=20111114'
type='text/css' media='all' />
<div id="wp-wpsm_body-editor-tools" class="wp-editor-tools">
<a id="wpsm_body-html" class="hide-if-no-js wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">
HTML</a> <a id="wpsm_body-tmce" class="hide-if-no-js wp-switch-editor switch-tmce"
onclick="switchEditors.switchto(this);">Visual</a>
<div id="wp-wpsm_body-media-buttons" class="hide-if-no-js wp-media-buttons">
<a href="http://localhost/wordpress/wp-admin/media-upload.php?post_id=0&TB_iframe=1"
class="thickbox add_media" id="wpsm_body-add_media" title="Add Media" onclick="return false;">
Upload/Insert
<img src="http://localhost/wordpress/wp-admin/images/media-button.png?ver=20111005"
width="15" height="15" /></a></div>
</div>
<div id="wp-wpsm_body-editor-container" class="wp-editor-container">
<textarea class="wp-editor-area" rows="20" cols="40" name="wpsm_body" id="wpsm_body"></textarea></div>
</div>
</form>
此处唯一相关的项目是form
和textarea
及其id
属性。
答案 0 :(得分:2)
假设您已经包含了tinyMCE的js文件,并且您正在使用tinyMCE
以下是验证tinyMCE编辑器的代码
<script>
$(document).ready(function () {
var $btn = $("#<%=btnSubmit.ClientID %>");
var $txtEditor = $(".txtEditor");
$btn.click(function () {
if (tinyMCE.get($txtEditor.attr("id")).getContent() == "") {
alert("hi");
}
else {
alert("bye");
}
return false;
})
});
</script>
<div>
<asp:TextBox id="TextBox1" runat="server" TextMode="MultiLine" CssClass="txtEditor212"></asp:TextBox>
<asp:TextBox id="txtEditor" runat="server" TextMode="MultiLine" CssClass="txtEditor"></asp:TextBox>
</div>
<div>
<asp:Button id="btnSubmit" runat="server" Text="Save" onclick="btnSubmit_Click" />
</div>
</asp:Content>
</div>
答案 1 :(得分:0)
我不确切知道TinyMCE在Wordpress中是如何使用的。
但之前我使用过TinyMCE,并且在富文本编辑器中进行编辑时textarea
没有得到更新(它确实在表单提交时更新)。我需要(ajax)时使用以下代码更新textarea:
form.find('textarea.rich').each(function() {
var textarea = $(this);
var taeditor = tinyMCE.get(textarea.attr('id'));
if (taeditor)
textarea.val(taeditor.getContent());
});
希望这有帮助。