最近在实现微博发表框基本功能的时候遇到了一些问题,下面一一罗列备忘。
1、在文本框光标处插入##,并将光标重置于刚插入的##之间
var obj = document.getElementById("dialog_textarea"); var selection = document.selection; obj.focus(); if (typeof(obj.selectionStart) != "undefined") { var s = obj.selectionStart; obj.value = obj.value.substr(0, obj.selectionStart) + "##" + obj.value.substr(obj.selectionEnd); obj.selectionEnd = s + 1; } else if (selection && selection.createRange) { var sel = selection.createRange(); sel.text = "##"; sel.moveStart('character', -1); sel.collapse(true); sel.select(); } else { obj.value += "##"; }
2、统计文本框中文字的字节数
var ch, st, re = []; var str = obj.value; for (var i = 0; i < str.length; i++ ) { ch = str.charCodeAt(i); // get char st = []; // set up "stack" do { st.push( ch & 0xFF ); // push byte to stack ch = ch >> 8; // shift value down by 1 byte } while ( ch ); re = re.concat( st.reverse() ); }
3、即时响应文本框内容变化的方法
<textarea id="dialog_textarea" cols="40" rows="5" onpropertychange="javascript:textareaValueChanged(this);" οninput="javascript:textareaValueChanged(this);">
onpropertychange 是 IE 的做法
oninput 是 FF 的做法