确保原短信模板内的内容不能被编辑,只能在原来的模板内容中追加
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>
====================================================================================
* 确保原短信模板内的内容不能被编辑,只能在原来的模板内容中追加
*/
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>
====================================================================================
相关文章推荐
- UEditor编辑文章时粘贴内容的时候导致原来的图片不能显示
- ueditor编辑文章时候,复制粘贴内容,原来的图片不能显示
- ueditor编辑文章时候,复制粘贴内容,原来的图片不能显示
- 让文本框内容不可编辑,如果type="file",那么只能通过点击浏览来改变,不能通过输入文字改变
- office2007只能打开不能编辑,原来是跟PowerDesigner冲突
- 如何让网页中文本框的内容只能读不能写
- Appium 不能输入中文问题 / 清除编辑框内容
- php 短信网关短信内容不能有空格
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 解决vs2008中不能显示模板页内容
- 下拉列表框只能选择,我想选择后还可以允许用户对选择的内容进行修改,如何实现可编辑的下拉列表框?
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- office2007只能打开不能编辑
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 生成网站后,在浏览器中浏览时只能出现网页中的内容,不能与数据库相连接的部分?
- 1, 编写程序,当用户在文本框中输入内容之后,单机不同的按钮,能够把文半框中的内容粘贴到文本区中。“重置”按钮实现将文本框和文本区中的内容清空。界面上的文本区只能显示内容,不能让用户输入文本。运行结果
- 如何编辑短信营销内容吸引客户
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- umeng(源生微信SDK)分享以及登陆的一些坑(只执行onStart不执行onComplete;分享内容只有图片;只能分享朋友圈,不能分享朋友)
- Prototype功能预览八:一个注解实现短信邮件内容模板