AjaxForm和tinyMCE
AjaxForm是基于JQuery可以实现Form Ajax的提交的一个组件,而TinyMCE是另一个使用javascript来实现Rich Editor的组件。不过当你需要同时使用这两个组件时,还是有一些主意点必须小心。
TinyMCE通过对Textarea来实现Rich editor,一次也容易令人造成一个假象,觉得TinyMCE的数据就不存在text area中,可以通过取得text area的value属性值就可以获得所要的数据,可能在一般的Form提交中并没有问题,不过Ajax的提交和不同的Form提交还是有一定的区别。为了手动的同步显示和Text area中的数据,用户必须手动的调用tinyMCE.getContent()这个函数来取得。特别是在AjaxForm中,数据在调用beforeSubmit回调函数 时,数据已经保存在AjaxForm的FormData中,不能通过简单的使用以下的语句:$(‘#textarea’).value(tinyMCE.getContent())实现数据的更新。必须遍历formData,更新formData的数据才行。
让我来举例说明:
tinyMCE.init({
mode : "textareas",
theme : "advanced",
});
$(document).ready(function() {
var options = {
beforeSubmit: onSubmit,
success: onSuccess,
dataType: "json",
};
$("#form_info").ajaxForm(options);
});
function onSubmit(formData, jqForm, options){
for (var i=0; i< formData.length; i++){
if (formData[i].name == "content"){
formData[i].value = tinyMCE.getContent();
}
}
return true;
}
其实所有的玄机就在onSubmit中的for循环(例子中的text area的id是content,如果定义其他名字修正此处即可)
JQuery vs Prototype
今天开始准备放弃Prototype开始学习JQuery,原因非常简单:
- JQuery 和Prototype不是非常兼容,主要就是在那个$函数的功能定义上。(奇怪为何两套如此优秀的Javascript Framework竟然会涉及成不兼容) 。
- JQuery的架构设计上可能比Prototype更加出色,也可能两者设计目标的不同,JQuery设计成更利于扩充;而Prototype的设计理念就是实现一些基础功能,不考虑其他复杂的实现。如果有一套JS完整解决方案,相信你也会选择这种方案,那JQuery就是这种完整的解决方案。它可以实现Prototype + script.aculo.us的功能,那我们何必去学多套框架呢。
- JQuery的Extension都提供一些基础的CSS设定,这样对我们这些CSS菜鸟来说就轻松了很多。同时这些CSS还都做了挺漂亮的。:)
以下的功能可能就是JQuery更讨人喜欢的原因:
- Leverage knowledge of CSS
- Support extensions. (这个是我最欣赏它的优点)
- Abstract away browser quirks.
- Always work with sets.
- Allow multiple actions in one line.
JQuery UI
今天看到几个非常不错的基于Javascript UI控件,不过是基于JQuery库的,自己对这套库不是非常熟悉。
它包括以下的功能:
- UI Datepicker (一个非常不错的日期选择器)。
- Beyond Flash (一个Pop消息的特效)。
- Clean Form Validation (Form校验)。
- Ajax Message
- Insert, update and add new messages automagically.
- Clicking on a message automagically changes into an editable textbox!
- Clean Calendar (允许用户选择日期后,添入Text文本框中)。
- Fisheye Menu (一个类似Mac OSX的菜单选择)
所有代码可以在http://marcgrabanski.com下载。