用空格替换文本区域中的逗号、破折号和输入键

Posted

技术标签:

【中文标题】用空格替换文本区域中的逗号、破折号和输入键【英文标题】:Replace comma, dash, and enter key in textarea with space 【发布时间】:2017-03-10 21:26:47 【问题描述】:

我希望当用户按下逗号、破折号或回车键时,textarea 替换将显示一个空格。

此代码仅适用于回车键。

    $("#site_name").on("keypress",function(e) 
        var key = e.keyCode;
        if ((key == 188)||(key == 13)||(key == 173)||(key == 191)) 
            document.getElementById("site_name").value=document.getElementById("site_name").value + " ";
            return false;
         else 
            return true;
        
    );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea  name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

【问题讨论】:

【参考方案1】:

如果您想继续使用 javascript 事件,我建议您使用 keydown 事件。 keydownkeypress 在映射到不同的功能时会给您不同的结果。逗号 = 188,破折号 = 189,输入 = 13。

$("#site_name").on("keydown",function(e) 
    var key = e.keyCode;
    console.log("keycode: " + key);
    if ((key == 189)||(key == 188)||(key == 13)||(key == 173)||(key == 191))              
        
        document.getElementById("site_name").value=document.getElementById("site_name").value + " ";
        return false;
    
    else 
    
        return true;
    
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea  name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

【讨论】:

@HristiyanDodov 他没有在他的问题中提到句点逗号或破折号或输入文本区域 是的,我的错,对不起。 感谢您的回答。你的答案对我有用。:))))【参考方案2】:

您可以简单地将keyCode 更改为which

var key = e.which;

【讨论】:

@miken32 因为他正在使用keypress,这将返回0 对于which 将返回字符值的大多数键。 这里是一个很好的测试按键的网站以及为什么你应该使用.whichwest-wind.com/westwindwebtoolkit/samples/ajax/html5andcss3/…【参考方案3】:

改用4544 键码:

$("#site_name").on("keypress",function(e) 
    var key = e.keyCode;
    console.log(key);
    if ((key == 45)||(key == 13)||(key == 44)||(key == 191)) 
        document.getElementById("site_name").value=document.getElementById("site_name").value + " ";

        return false;
     else 
        return true;
    
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea  name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

【讨论】:

【参考方案4】:

这使用正则表达式。我用keyup 替换了keypress 事件,因为keypress 在添加实际字符之前 被激活,因此无法立即删除逗号/破折号/换行符。如果您确实想要这种行为,可以将其还原为 keypress

$("#site_name").on("keyup", function() 
  $(this).val($(this).val().replace(/[\,\-\n]/g, " "));
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="site_name" id="site_name" style="width: 100%;" rows="3"></textarea>

/[\,\-\n]/g 中的g 表示使用了全局标志。这需要替换 all 出现的所需字符。如果未使用此标志并且您复制粘贴了一堆逗号和破折号,则只有第一个会被替换。更多关于正则表达式here。

【讨论】:

以上是关于用空格替换文本区域中的逗号、破折号和输入键的主要内容,如果未能解决你的问题,请参考以下文章

无法在使用脚本放置逗号的文本区域中退格

PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式

用破折号替换 URL 中的空格

用破折号替换空格并复制到新列

Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]

用 html 文档中的“易碎”nbsp 替换空格