将文本区域中的逗号、破折号和输入键替换为 space

Replace comma, dash, and enter key in textarea with space

我希望当用户按下逗号、破折号或回车键时,文本区域替换将显示 space。

此代码仅适用于回车键。

    $("#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>

这使用正则表达式。我用 keyup 替换了 keypress 事件,因为 keypress 之前被激活 实际字符被添加,所以 comma/dash/linebreak 不能立即被删除。如果您真的想要这种行为,可以将其恢复为 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.

您只需将 keyCode 更改为 which

var key = e.which;

如果您想继续使用 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>

尝试使用 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>