您的位置:首页 > 其它

确保原短信模板内的内容不能被编辑,只能在原来的模板内容中追加

2011-03-11 12:36 232 查看
/**
* 确保原短信模板内的内容不能被编辑,只能在原来的模板内容中追加
*/
function CheckSMSModuleIsReadonly(field){
var smsContent=$("smsTemplateContent").value;//得到短信模板内容,不能通过参数传过来(报JS错)
var minlimit=smsContent.length;
var pos=cursorPosition.get(field);
if(minlimit>pos.start){
//event.keyCode=0; //某些情况下可致异常,暂不使用
alert("注意:原短信模板的内容不能被删除和修改!");
event.returnValue=false;
}else if (event.keyCode==8 && (pos.start==pos.end)){
if(minlimit+1 > pos.start){
//event.keyCode=0;
alert("注意:原短信模板的内容不能被删除和修改!");
event.returnValue=false;
}
}
}

/**
* 得到鼠标在textarea中光标所在开始和结束位置及设置和增加位置
*/
var cursorPosition = {
get: function (textarea) {
var rangeData = {text: "", start: 0, end: 0 };
if (textarea.setSelectionRange) { // W3C
textarea.focus();
rangeData.start= textarea.selectionStart;
rangeData.end = textarea.selectionEnd;
rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end): "";
} else if (document.selection) { // IE
textarea.focus();
var i,
oS = document.selection.createRange(),
// Don't: oR = textarea.createTextRange()
oR = document.body.createTextRange();
oR.moveToElementText(textarea);
rangeData.text = oS.text;
rangeData.bookmark = oS.getBookmark();
// object.moveStart(sUnit [, iCount])
// Return Value: Integer that returns the number of units moved.
for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i ++) {
// Why? You can alert(textarea.value.length)
if (textarea.value.charAt(i) == '/r' ) {
i ++;
}
}
rangeData.start = i;
rangeData.end = rangeData.text.length + rangeData.start;
}

return rangeData;
},

set: function (textarea, rangeData) {
var oR, start, end;
if(!rangeData) {
alert("你必须使textarea得到焦点!");
}
textarea.focus();
if (textarea.setSelectionRange) { // W3C
textarea.setSelectionRange(rangeData.start, rangeData.end);
} else if (textarea.createTextRange) { // IE
oR = textarea.createTextRange();
// Fixbug : ues moveToBookmark()
// In IE, if cursor position at the end of textarea, the set function don't work
if(textarea.value.length === rangeData.start) {
oR.collapse(false);
oR.select();
} else {
oR.moveToBookmark(rangeData.bookmark);
oR.select();
}
}
},

add: function (textarea, rangeData, text) {
var oValue, nValue, oR, sR, nStart, nEnd, st;
this.set(textarea, rangeData);
if (textarea.setSelectionRange) { // W3C
oValue = textarea.value;
nValue = oValue.substring(0, rangeData.start) + text + oValue.substring(rangeData.end);
nStart = nEnd = rangeData.start + text.length;
st = textarea.scrollTop;
textarea.value = nValue;
// Fixbug:
// After textarea.values = nValue, scrollTop value to 0
if(textarea.scrollTop != st) {
textarea.scrollTop = st;
}
textarea.setSelectionRange(nStart, nEnd);
} else if (textarea.createTextRange) { // IE
sR = document.selection.createRange();
sR.text = text;
sR.setEndPoint('StartToEnd', sR);
sR.select();
}
}
}

====================================================================================
<th>短信内容:</th>
<td>
<textarea id="smsContent" onKeyDown="CheckSMSModuleIsReadonly(this);" class="v_notNull v_forbiddenStr" style="height: 100px;"
name="smsTemplate.content" class="v_forbiddenStr">${(smsTemplate.content)!}</textarea>
<input type="hidden" readOnly="true" id="smsTemplateContent" name="smsTemplateContent" value="${(smsTemplate.content)!}" />
</td>
====================================================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐