我有一个大型表格的验证工作(我在提交前检查表单的各个部分之前发了几次),以及一个在1 textarea中工作的tinyMCE编辑器。我想将tinyMCE iframe的内容移到textarea之前(这是之前的键 - 之前)按下Submit按钮,以便在Submit之前的部分中验证内容。
我在几种方式中使用tinyMCE.triggerSave();
来移动内容,然后在提交之前触发验证。没有工作。我开始相信tinyMCE内容不能被任何Javascript移动,而内容只能通过Submit按钮移动,但我没有看到任何地方说明。
在tinyMCE中,我尝试onchange_callback:
和handle_node_change_callback:
使用triggerSave和其他保存命令触发函数。当我按两次提交时,我可以获取tinyMCE的内容以进行验证(其他人已经注意到这种特性),但不是以任何其他方式。
此外,当在tinyMCE中更正错误时,在按下提交之前,验证不会重新生效。它应该实时重新验证,因为Validation旨在实现。
2个问题 -
任何人都知道如何将tinyMCE内容移动到textarea而不点击提交?
CKEditor是否允许除提交之外的更新,如果是,那么教程或示例在哪里?
这是一个应该由tinyMCE的onchange_callback触发的代码示例,但仅在第二次单击Submit时触发。
function tinyMCESetValue(inst)
{
var content = tinyMCE.activeEditor.getContent();
if (tinyMCE.activeEditor.isDirty()) {tinyMCE.triggerSave(true, true);}
// other save expressions that have been tried - with same results
//$("#selector").val(content);
//$("textarea.tinymce").val(content);
//tinyMCE.triggerSave();
//ed.save();
alert("some change"); //does not fire
}
在回应Thariama的评论时,上面的代码应该由onchange_callback的tinyMCEinit选项触发:“tinyMCESetValue”。我在JS部分中也有以下代码,可以正确执行其他所有操作。警报始终显示“未定义”。看到有什么问题?我应该在哪里看/尝试?我可以做什么测试 - 我没有从Firebug获得有用的信息。
if ($( "#sections" ).accordion( "option", "active" ) == 1) //if the second Accordion section
{
var content = tinyMCE.activeEditor.getContent(); //get the content from the tinyMCE iframe
if (tinyMCE.activeEditor.isDirty()) //if the contents of tinyMCE have changed}
{tinyMCE.triggerSave(true, true);} //put contents in the textarea
alert("|" + $("#detailedDescription").val() + "|tinyMCEval");
if (i == 7) {$("#detailedDescription").rules("add", {validCharsCheck: true});}
}
答案 0 :(得分:1)
我找到了解决这个问题的方法 我更改了 jquery.validate.js 文件。
this.submit(function (event)
{
if (window.tinyMCE != undefined)
{
tinyMCE.triggerSave();
}
.
.
.
})
此解决方案仅适用于 tinymce 。
答案 1 :(得分:0)
嗨,如果您在使用TINYMCE时没有在表单提交时获得客户端验证 我有一个解决方案,但这不是正确的方法,但它工作正常,您可以在表单提交时获得所有必要的验证,请检查此代码或示例 这是客户端验证 @ Html.LabelFor(model => model.txtAboutCompany,new {@class =“required”}) @ Html.EditorFor(model => model.txtAboutCompany)
这是JQUERY
$("#BusinessProfile").click(function () {
var aboutC = $("#txtAboutCompany").val()
var pinfo = $("#txtProductinfo").val();
if (aboutC == "" && pinfo == "") {
$("#AC").append("").val("").html("Please enter about company")
$("#PI").append("").val("").html("Please enter product information")
$("#bpform").valid();
return false;
} else if (aboutC == "") {
$("#PI").append("").val("").html("")
$("#AC").append("").val("").html("Please enter about company")
$("#txtAboutCompany").focus();
$("#bpform").valid();
return false;
} else if (pinfo == "") {
$("#AC").append("").val("").html("")
$("#PI").append("").val("").html("Please enter product information")
$("#txtProductinfo").focus();
$("#bpform").valid();
return false;
}
else {
$("#AC").append("").val("").html("");
$("#PI").append("").val("").html("");
//return true;
$("#bpform").validate();
}
});
试试吧