禁用文本区域javascript中的多个空格

禁用文本区域javascript中的多个空格,javascript,Javascript,为了避免在文本区域中键入多个空格,我在keyup上调用了一个函数onCLick,并将代码写在下面 var val = document.getelemntByID('trmp'); val.value = val .value.replace(/ +(?= )/g,''); 这在Firefox中运行良好,在IE7中运行正常,但会导致一些其他问题,例如选择一个单词并删除它将删除整个文本区域内容我建议不要一直重写textarea的值,因为它可能有缺陷。如果前一个字符是空格,只需禁用输入空格: $(

为了避免在文本区域中键入多个空格,我在keyup上调用了一个函数
onCLick
,并将代码写在下面

var val = document.getelemntByID('trmp');
val.value = val .value.replace(/ +(?= )/g,'');

这在Firefox中运行良好,在IE7中运行正常,但会导致一些其他问题,例如选择一个单词并删除它将删除整个文本区域内容

我建议不要一直重写textarea的值,因为它可能有缺陷。如果前一个字符是空格,只需禁用输入空格:

$(function(){
    var $tA=$('#temp');
    $tA.keydown(function(e){
        var cursorPos = getCursorPosition($tA.get(0));
        if(e.which === 32 && cursorPos > 0 && $tA.val()[cursorPos-1] === ' '){
           return false;            
        }
    });
});

getCursorPosition = function(el) {
        var pos = 0;
        // IE Support
        if (document.selection) {
            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;
        }
        // Firefox support
        else if (el.selectionStart || el.selectionStart == '0')
            pos = el.selectionStart;

        return pos;
    }

仅将正则表达式用于空格。添加一个keycode条件


检查这把小提琴

你能生成一个jsfiddle.net并告诉我们在哪个浏览器中如何重新创建问题吗?->第一次使用tht编辑器时,我没有得到正确的结果。显然,您的RegExp与任何内容都不匹配:请尝试任何其他值(
/
),它将正常工作