防止删除文本框中的特殊字符

时间:2014-09-05 10:21:37

标签: javascript jquery

我想在按backspacecanc时阻止用户删除文本框中的任何“/”字符。

例如:

如果文本框值为2014/09/,并且用户按退格键,则不会删除“/”字符。

如何在keyupkeydown evenets中执行此操作?

$("#textboxId").keyup(function(){

   // any idea

});

3 个答案:

答案 0 :(得分:2)

您有三种情况:

  1. 用户按下backspace并删除光标前的字符
  2. 用户按下canc并删除光标
  3. 后的字符
  4. 用户选择文字并按backspacecanc并删除所选文字
  5. 所以你必须解决所有这些不同的情况。

    此代码可以使用:

    $('#textareaId')[0].addEventListener("keydown", function(e) {
        var start = this.selectionStart,
            end = this.selectionEnd,
            value = this.value,
            key = e.keyCode;
    
        if (key == 8 && value[start-1] == '/') e.preventDefault();
        if (key == 46 && value[start] == '/') e.preventDefault();
        if ((key == 8 || key == 46) && value.substring(start, end).indexOf('/') != -1) e.preventDefault();
    
    }, false);
    

    工作示例:http://jsfiddle.net/MeBeiM/7hdb3472/1

答案 1 :(得分:0)

我已经使用字符串操作

完成了它

在这里查看我的小提琴http://jsfiddle.net/7ek11cfs/21/

$('textarea').keydown(function(e) {
   textValue = $(this).val();
});

$('textarea').keyup(function(e) {
 if(textValue.charAt(textValue.length-1)=='/')
 {
   $('textarea').val(textValue);
 }
});

希望这有帮助

答案 2 :(得分:0)

这里你去=>的 DEMO

(function ($, undefined) {
    $.fn.getCursorPosition = function() {
        var el = $(this).get(0);
        var pos = 0;
        if('selectionStart' in el) {
            pos = el.selectionStart;
        } else if('selection' in document) {
            el.focus();
            var Sel = document.selection.createRange();
            var SelLength = document.selection.createRange().text.length;
            Sel.moveStart('character', -el.value.length);
            pos = Sel.text.length - SelLength;
        }
        return pos;
    }
})(jQuery);

$("#textboxId").keydown(function(e){
    var currentPos=$(this).getCursorPosition();
    var lastChar=$(this).val().substr((currentPos- $(this).val().length)- 1);
    if(e.which==8 && lastChar.match(/^\//g) ){
        e.preventDefault();
        return false;
    }
});

我从THIS ANSWER获得了一些帮助,以确定游标的当前位置。

请注意,与所有其他答案和想法相反,这实际上会像面具一样工作,即使光标位于文本中间也不会被删除!