用空格替换文本区域中的逗号、破折号和输入键
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
事件。 keydown
和 keypress
在映射到不同的功能时会给您不同的结果。逗号 = 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
将返回字符值的大多数键。
这里是一个很好的测试按键的网站以及为什么你应该使用.which
west-wind.com/westwindwebtoolkit/samples/ajax/html5andcss3/…【参考方案3】:
改用45
和44
键码:
$("#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。
【讨论】:
以上是关于用空格替换文本区域中的逗号、破折号和输入键的主要内容,如果未能解决你的问题,请参考以下文章