javascript - 在 keypressup 事件中按下单个键时,textarea 打印两个字符

标签 javascript jsp

我正在使用谷歌虚拟键盘并在文本区域上设置。
当我在文本区域上写一些东西时,它们会在文本区域中打印两个字符,一个是大写,第二个是小写。

我为文本区域编写了一个 JavaScript 函数,其中“.”之后- 点这些字符使其自动大写字母。

如何删除一个字符并且文本区域仅打印一个字符?因为当我按单个键时,它们会打印两个字符。 此函数用于“.”后的大写字母。点并在文本区域上设置按键事件。

function caps(e, textarea, value){
    //debugger;
    var unicode=e.keyCode? e.keyCode : e.charCode;
    var str=value.trim();
    str=str.charAt(str.length-1);

    if((str=="." || value.length==0) && (unicode>=97 && unicode<=122)){
        textarea.value=textarea.value+String.fromCharCode(unicode).toUpperCase();
        return false;
    }
    return true;
}

最佳答案

要停止事件的默认行为,您可以使用e.preventDefault();。所以类似

function caps(e, textarea, value){
    //debugger;
    var unicode=e.keyCode? e.keyCode : e.charCode; //my keyboard threw out ascii..

    var str=value.trim();
    str=str.charAt(str.length-1);
    if(str=="." || value.length==0){

      textarea.value=textarea.value+String.fromCharCode(unicode).toUpperCase();
        e.preventDefault();
    }
}


input.addEventListener("keypress",function(e){
    if(e.keyCode==8) return true
     caps(e,input,input.value)

},false)

您可以使用return false,但您需要执行类似的操作

input.onkeypress=function(){
    if(e.keyCode==8) return true
    return caps(e,input,input.value); //pass false from caps too event
}

Demo

关于javascript - 在 keypressup 事件中按下单个键时,textarea 打印两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23905858/

相关文章:

javascript - 动态添加多个框阴影的纯CSS方案

javascript - 将 cheerio 对象转换为字符串

javascript - jQuery 模板未正确绑定(bind)

java - Jsp 文件有时抛出内部服务器 500 错误

java - JSP 显示日期时间而不是日期

javascript - 如果今天是会计年度的最后一天,则从下拉菜单中删除当前年份

jsp - 升级项目后 JSP 中的未终止标记

javascript - JavaScript 变量范围的澄清

javascript - 在javascript中互相访问单例和内部类

mysql - 从数据库中的三个不同表中选择数据到jsp tale中