在我的MVC 3应用程序中,我使用CKeditor编辑富文本。现在我需要能够使用HTML标签将文本保存到DB。
问题是我点击按钮'保存'没有任何反应。
警报返回未定义。
查看:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
@Html.DropDownListFor(model=>model.Id, Model.Texts)
<div class="editor-field">
@Html.TextAreaFor((model => model.Text), new { @Id = "editor1" })
@Html.ValidationMessageFor(model => model.Text)
</div>
<script type="text/javascript">
CKEDITOR.replace('editor1');
</script>
<script type="text/javascript">
var editor_data1 = $('editor1').val();
var editor_data = editor_data1.getHtml();
var url = '@Url.Action("EditText", "Admin")';
var data = { commentText: editor_data };
function Save() {
alert(editor_data);
$.post(url, data, function(result) {
});
};
$('#Id').change(function () {
var selectedText = $(this).val();
if (selectedText != null && selectedText != '') {
$.getJSON('@Url.Action("Text","Admin")', { Id: selectedText }, function (text) {
// var textSelect = $('#Text');
// textSelect.empty();
// $("#Text")[0].value = text;
CKEDITOR.instances['editor1'].setData(text);
// $.each(text, function (index, employee) {
// textSelect.append($('<option/>', {
// value: employee.Value,
// text: employee.Text
//// }));
// });
});
}
});
</script>
</fieldset>
<p>
<input type="button" value="Save" onclick="Save()"/>
</p>
}
答案 0 :(得分:1)
尝试更换:
var editor_data1 = $('editor1').val();
使用:
var editor_data1 = $('#editor1').val();
#
作为前缀。
您使用的.val()
方法也会返回一个字符串。我不知道CKEditor,但我非常怀疑字符串类型有getHtml
。
你可能意味着:
var editor_data = CKEDITOR.instances['editor1'].getData();
此外,您似乎订阅了id="Id"
的某些DOM元素的更改事件:
$('#Id').change(...);
我在DOM中看不到任何这样的元素。你确定你不是故意的:
$('#editor1').change(...);
或其他一些元素?也许下拉?
您似乎在使用jQuery语法时遇到了一些问题。我建议你阅读一些教程。
答案 1 :(得分:0)
Save()
函数上方的行将在解析文档时执行。那时,您的CKEditor可能还没有存在。要解决此问题,请移至Save()
内,如下所示:
function Save() {
var editor_data1 = $('editor1').val();
var editor_data = editor_data1.getHtml();
var url = '@Url.Action("EditText", "Admin")';
var data = { commentText: editor_data };
alert(editor_data);
$.post(url, data, function(result) { });