编辑器问题:保持div和textarea同步????? 本帖最后由 showbo 于 2014-01-15 17:53:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能是我写错的了。我是点击一个按钮,赋值到textarea,再显示到div。这样在div操作的时候,textarea无法同步捕捉结果。如果是直接赋值到div,再通过blur事件等传递到textarea,应该没有这样的问题。不过光标插入函数在textarea好用,但在div不好用,插入失败。选哪种路子呢??不知道有没有好的源码? <script>(function($){$.fn.fheditor=function(ops){tt=$(this);var ttw=tt.width();var tth=tt.height();var sets={fhstats:"0",words:"0"}var newsets=$.extend(sets,ops);var editdiv=$("<div id='editdiv' contentEditable=true></div>").height(tth).width(ttw).css("border","1px solid #ddd");var editval=editdiv.html();tt.hide().after(editdiv);var t_bold=$("<div class='tooldivs_bold' id='t_bold'></div>").click(function(){tt.setCaret();tt.insertAtCaret("<b>name</b>");editdiv.html(tt.val())});}})(jQuery);//rangejQuery.extend({ /** * 清除当前选择内容 */ unselectContents: function(){ if(window.getSelection) window.getSelection().removeAllRanges(); else if(document.selection) document.selection.empty(); } }); jQuery.fn.extend({ /** * 选中内容 */ selectContents: function(){ $(this).each(function(i){ var node = this; var selection, range, doc, win; if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof win.getSelection != 'undefined' && typeof doc.createRange != 'undefined' && (selection = window.getSelection()) && typeof selection.removeAllRanges != 'undefined') { range = doc.createRange(); range.selectNode(node); if(i == 0){ selection.removeAllRanges(); } selection.addRange(range); } else if (document.body && typeof document.body.createTextRange != 'undefined' && (range = document.body.createTextRange())) { range.moveToElementText(node); range.select(); } }); }, /** * 初始化对象以支持光标处插入内容 */ setCaret: function(){ if(!$.browser.msie) return; var initSetCaret = function(){ var textObj = $(this).get(0); textObj.caretPos = document.selection.createRange().duplicate(); }; $(this) .click(initSetCaret) .select(initSetCaret) .keyup(initSetCaret); }, /** * 在当前对象光标处插入指定的内容 */ insertAtCaret: function(textFeildValue){ var textObj = $(this).get(0); if(document.all && textObj.createTextRange && textObj.caretPos){ var caretPos=textObj.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? textFeildValue+'' : textFeildValue; } else if(textObj.setSelectionRange){ var rangeStart=textObj.selectionStart; var rangeEnd=textObj.selectionEnd; var tempStr1=textObj.value.substring(0,rangeStart); var tempStr2=textObj.value.substring(rangeEnd); textObj.value=tempStr1+textFeildValue+tempStr2; textObj.focus(); var len=textFeildValue.length; textObj.setSelectionRange(rangeStart+len,rangeStart+len); textObj.blur(); } else { textObj.value+=textFeildValue; } } });</script> var t_bold=$("<div class='tooldivs_bold' id='t_bold'></div>").click(function(){<span style="color: #800000;">tt.setCaret();tt.insertAtCaret("<b>name</b>")</span>;<span style="color: #FF0000;">editdiv.html(tt.val())</span>上面是代码 关键部分加颜色失败,重发。 js打印功能已经实现,现在怎么控制打印出来图片的大小呢? ext如何显示千位的金额? 我这样写对吗,简单js问题,可是测试结果不对,不知道那里错了 只有确定按钮的对话框,按确定返回当前页面 关于在客户端变量和服务端变量 一个导航问题,求各位大大指点一下! web下怎么用程序控制打印时的纸张类型?? 急!~~~~~~急!请各位大虾帮忙,一定给分. 酬劳找一位能实现enter 功能的一段js代码 react native 环境搭建失败,新建一个项目,运行报错,不知道啥原因,请大侠赐教 请大神门帮忙用js解决去掉正文中括号与括号中文字的小程序 一行javascript没看懂,求解释
(function($){
$.fn.fheditor=function(ops){
tt=$(this);
var ttw=tt.width();
var tth=tt.height();var sets={
fhstats:"0",words:"0"
}
var newsets=$.extend(sets,ops);var editdiv=$("<div id='editdiv' contentEditable=true></div>").height(tth).width(ttw).css("border","1px solid #ddd");var editval=editdiv.html();tt.hide().after(editdiv);
var t_bold=$("<div class='tooldivs_bold' id='t_bold'></div>").click(function(){tt.setCaret();tt.insertAtCaret("<b>name</b>");
editdiv.html(tt.val())
});
}
})(jQuery);//range
jQuery.extend({
/**
* 清除当前选择内容
*/
unselectContents: function(){
if(window.getSelection)
window.getSelection().removeAllRanges();
else if(document.selection)
document.selection.empty();
}
});
jQuery.fn.extend({
/**
* 选中内容
*/
selectContents: function(){
$(this).each(function(i){
var node = this;
var selection, range, doc, win;
if ((doc = node.ownerDocument) &&
(win = doc.defaultView) &&
typeof win.getSelection != 'undefined' &&
typeof doc.createRange != 'undefined' &&
(selection = window.getSelection()) &&
typeof selection.removeAllRanges != 'undefined')
{
range = doc.createRange();
range.selectNode(node);
if(i == 0){
selection.removeAllRanges();
}
selection.addRange(range);
}
else if (document.body &&
typeof document.body.createTextRange != 'undefined' &&
(range = document.body.createTextRange()))
{
range.moveToElementText(node);
range.select();
}
});
},
/**
* 初始化对象以支持光标处插入内容
*/
setCaret: function(){
if(!$.browser.msie) return;
var initSetCaret = function(){
var textObj = $(this).get(0);
textObj.caretPos = document.selection.createRange().duplicate();
};
$(this)
.click(initSetCaret)
.select(initSetCaret)
.keyup(initSetCaret);
},
/**
* 在当前对象光标处插入指定的内容
*/
insertAtCaret: function(textFeildValue){
var textObj = $(this).get(0);
if(document.all && textObj.createTextRange && textObj.caretPos){
var caretPos=textObj.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ?
textFeildValue+'' : textFeildValue;
}
else if(textObj.setSelectionRange){
var rangeStart=textObj.selectionStart;
var rangeEnd=textObj.selectionEnd;
var tempStr1=textObj.value.substring(0,rangeStart);
var tempStr2=textObj.value.substring(rangeEnd);
textObj.value=tempStr1+textFeildValue+tempStr2;
textObj.focus();
var len=textFeildValue.length;
textObj.setSelectionRange(rangeStart+len,rangeStart+len);
textObj.blur();
}
else {
textObj.value+=textFeildValue;
}
}
});
</script>
<span style="color: #FF0000;">editdiv.html(tt.val())</span>
上面是代码 关键部分加颜色失败,重发。