2012-02-11 84 views
0

在我的MVC 3应用程序中,我使用CKeditor编辑富文本。现在我需要能够使用HTML标签将文本保存到数据库。Javascript函数未被解雇?

问题是,当我点击按钮'保存'时,没有任何反应。

警报返回未定义。

查看:

@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> 
} 

回答

1

尝试更换:

var editor_data1 = $('editor1').val(); 

有:

var editor_data1 = $('#editor1').val(); 

在jQuery的,如果你要执行id selector你应该#前缀它。

此外,您正在使用的.val()方法返回一个字符串。我不知道CKEditor,但我非常怀疑字符串类型上有一个getHtml

你大概的意思是:

var editor_data = CKEDITOR.instances['editor1'].getData(); 

而且你似乎订阅一些DOM元素的变化与事件id="Id"

$('#Id').change(...); 

我看不到任何这样的元素在DOM 。你确定你不是这个意思:

$('#editor1').change(...); 

还是其他一些元素?也许下拉?

您似乎对jQuery语法有一些问题。我会建议你阅读一些教程。

+0

ttryed的一切,还是一样...警报返回undefined,而我无法找到任何地方的互联网,人们从CK编辑 – Timsen 2012-02-11 21:32:15

+1

@Timsen retrive数据上,也许你在你的代码中有一些其他的错误。看看你的javascript调试控制台。正如你所看到的,在你发布的这个非常简单的代码片段中,我发现了很多问题。你会让我现在下载CKEDITOR并为你写一个完整的例子吗?我只是准备看电影:-) – 2012-02-11 21:33:53

+0

以及我在javascripting awefull(刚开始学习它)。 #id是dropdownlistitem的ID,所以它确定,该部分正常工作。 – Timsen 2012-02-11 21:38:34

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) { }); 
+0

警报甚至不显示,所以它已经在editor_data1上失败了 – Timsen 2012-02-11 21:39:19