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

/**
 * 确保原短信模板内的内容不能被编辑,只能在原来的模板内容中追加
 */
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>
====================================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值