使用TINYMce和验证,但需要发布两次,并且textarea是否为空并不重要。我研究过这个,但是找不到任何有用的东西。以下是代码片段。
模型
[Required(ErrorMessage = "*Response Required")]
[UIHint("tinymce_jquery_full"), AllowHtml]
public string LibrarianResponse { get; set; }
查看
<span style="color: red;font-weight: 700;">@Html.ValidationMessageFor(m => m.LibrarianResponse)</span>
<div class="editor-field">
@Html.EditorFor(model => model.LibrarianResponse)
</div>
<script type="text/javascript">
jQuery(function ($) {
$('#submit').click(function () {
tinyMCE.triggerSave();});
});
</script>
<input type="submit" value="Submit" />
提前感谢。
答案 0 :(得分:1)
好的,最后解决了这个问题。我的原始代码几乎是正确的。
您会注意到,在我原来的问题中,我有以下代码:
<script type="text/javascript">
jQuery(function ($) {
$('#submit').click(function () {
tinyMCE.triggerSave();});
});
</script>
另外,我在textarea
下面有以下内容:
<span style="color: red;font-weight: 700;">
@Html.ValidationMessageFor(m => m.LibrarianResponse)
</span>
<div class="editor-field">
@Html.EditorFor(model => model.LibrarianResponse)
</div>
我所要做的就是将LibrarianResponse
(使用开发工具发现谷歌浏览器中id
的{{1}})放入textarea
功能。< / p>
所以这很有用。见下文:
.triggerSave
感谢那些回答我问题的人。我很感激。
答案 1 :(得分:0)
TinyMCE需要花费少量时间来更新它在其上运行的原始(现在隐藏)输入。你是用triggerSave
做的。但是,表单提交可能会在triggerSave
完成之前继续并运行。所以这样做:
jQuery(function ($) {
$('#submit').click(function(evt) {
evt.preventDefault();
tinyMCE.triggerSave();
$(evt.target).closest('form').submit();
});
});
答案 2 :(得分:0)
我通过tinyMCE textarea更改时随时更新基础textarea解决了这个问题:
function tinyChanged(inst) {
if (inst.isDirty()) {
inst.save();
}
}
tinymce.init({
selector: "myTextArea",
setup: function(ed) {
ed.on("change", function () {
tinyChanged(ed);
})
}
});