将文本区域中的逗号、破折号和输入键替换为 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
事件。 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>
尝试使用 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>
我希望当用户按下逗号、破折号或回车键时,文本区域替换将显示 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
事件。 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>
尝试使用 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>