zoukankan      html  css  js  c++  java
  • js 文本框根据开始结束符号控制输入内容(IE)

     1 //模板控制
     2     var preMark = "[";
     3     var latterMark = "]";
     4     $("#new_desc").on("keydown", function (event) {
     5                 var valtxt = $(this).val();
     6                 if (valtxt.indexOf(preMark) > -1 && valtxt.indexOf(latterMark) > -1) {
     7                     var p = posCursor(this.id);
     8                     var perindex = valtxt.lastIndexOf(preMark, p.start);
     9                     var index = valtxt.indexOf(latterMark, p.start);
    10                     if(!(valtxt.substring(p.start, p.end).indexOf(latterMark) == -1
    11                         && valtxt.substring(p.start, p.end).indexOf(preMark) == -1)){
    12                             return false;
    13                         }
    14                     else if (event.keyCode == '8') {
    15                         //删除键只能删除括号里面
    16                         if (valtxt.substring(perindex + 1, index).length > 0 && valtxt.substring(perindex + 1, index).indexOf(latterMark) == -1 && valtxt.substring(perindex + 1, index).indexOf(preMark) == -1 && valtxt.substring(perindex + 1, index).indexOf(latterMark) <= valtxt.substring(perindex + 1, index).indexOf(preMark) && p.end > perindex + 1) {
    17                             return true;
    18                         } else {
    19                             return false;
    20                         }
    21                     }
    22                     //禁用删除、全选、[]
    23                     else if (event.keyCode == "46" || event.shiftKey!=true && (event.keyCode == "221" || event.keyCode == "219" )|| (event.ctrlKey) && (event.keyCode == 65)) {
    24                         return false;
    25                     }
    26                     //括号外禁用所有操作
    27                     else if (event.keyCode != "38" && event.keyCode != "40" && perindex != -1 && index != -1 && perindex < index && perindex + 1 <= p.start && index >= p.start && valtxt.substring(perindex + 1, index).indexOf(latterMark) == -1 && valtxt.substring(perindex + 1, index).indexOf(preMark) == -1) {
    28                         if (perindex + 1 == p.start && event.keyCode == 37) {
    29                             moveCursor(this.id, perindex + 1, perindex + 1);
    30                         } else if (index == p.end && event.keyCode == 39) {
    31                             moveCursor(this.id, index, index);
    32                         } else {
    33                             return true; 
    34                         }
    35                     } else {
    36                         if (index == p.end && event.keyCode == "37" || perindex + 1 == p.start && event.keyCode == "39") {
    37                             return true;
    38                         }
    39                         return false;
    40                     }
    41                 } else { 
    42                     return false; 
    43                 }
    44             })
    45             //禁用拖拽
    46             .on("drop", function () {
    47                 return false;
    48             })
    49             .select(function (event) {
    50                 var valtxt = $(this).val();
    51                 if (valtxt.indexOf(preMark) > -1 && valtxt.indexOf(latterMark) > -1) {
    52                     var p = posCursor(this.id); //括号范围之内不做任何操作
    53                     var perindex = valtxt.lastIndexOf(preMark, p.start);
    54                     var index = valtxt.indexOf(latterMark, p.start);
    55                     if (valtxt.substring(perindex + 1, index).indexOf(latterMark) == -1
    56                         && valtxt.substring(perindex + 1, index).indexOf(preMark) == -1
    57                         && valtxt.substring(perindex + 1, index).indexOf(latterMark) <= valtxt.substring(perindex + 1, index).indexOf(preMark)
    58                         && p.end >= perindex + 1
    59                         && valtxt.substring(p.start, p.end).indexOf(latterMark) == -1
    60                         && valtxt.substring(p.start, p.end).indexOf(preMark) == -1
    61                         ) {
    62 
    63                     } else {
    64                         window.getSelection().removeAllRanges();
    65                     }
    66                 } else { 
    67                     return false;
    68                 }
    69             })
    70             //移入自动定位到指定中括号内
    71             .on("mouseup", function () {
    72                 var valtxt = $(this).val();
    73                 if (valtxt.indexOf(preMark) > -1 && valtxt.indexOf(latterMark) > -1) {
    74                     var p = posCursor(this.id);
    75                     //括号范围之内不做任何操作
    76                     if (valtxt.lastIndexOf(preMark, p.start) < p.start && p.start < valtxt.indexOf(latterMark, p.start) + 1 && valtxt.substring(valtxt.lastIndexOf(preMark, p.start) + 1, valtxt.indexOf(latterMark, p.end)).indexOf(latterMark) == -1 && valtxt.substring(valtxt.lastIndexOf(preMark, p.start) + 1, valtxt.indexOf(latterMark, p.end)).indexOf(preMark) == -1) {
    77 
    78                     } else {
    79                         //定位并选中括号之间
    80                         var startindex = valtxt.indexOf(preMark, p.start);
    81                         if (startindex > -1) {
    82                             var endindex = valtxt.indexOf(latterMark, p.start);
    83                             var lstartindex = valtxt.lastIndexOf(preMark, p.start);
    84                             var lendindex = valtxt.lastIndexOf(latterMark, p.start);
    85                             if ((lstartindex > -1 && Math.abs(p.start - lendindex) < Math.abs(p.start - startindex)) && valtxt.substring(lendindex, p.start - 2).indexOf("
    ") == -1) {
    86                                 startindex = lstartindex;
    87                                 endindex = lendindex;
    88                             }
    89                         } else {
    90                             startindex = valtxt.lastIndexOf(preMark, p.start);
    91                             var endindex = valtxt.lastIndexOf(latterMark, p.start);
    92                         }
    93                         //
    94                         var ncnt = 0;
    95                         //执行光标定位
    96                         moveCursor(this.id, startindex + 1 + ncnt, endindex + ncnt);
    97                     }
    98                 } else { $(this).blur(); }
    99             });
  • 相关阅读:
    cookie操作
    css加载动画...
    三目运算符的运用
    遍历对象长度
    2年
    相亲

    股市周期
    功利心
    思考笔记
  • 原文地址:https://www.cnblogs.com/zengtianli/p/14714861.html
Copyright © 2011-2022 走看看