【发布时间】:2010-10-04 21:15:04
【问题描述】:
我认为在表单输入时劫持空格键是一件简单的事情,这样它就可以像连字符一样起作用。一般来说,jQuery 让这样的事情变得非常简单。
我试过的代码是这样的:
$("#StreamUrl").keydown(function (e) {
if (e.keyCode == 32) return 109;
});
但这没有任何效果。我尝试了一个更简单的脚本:
$("#StreamUrl").keydown(function (e) {
//if (e.keyCode == 32) return 109;
alert(e.keyCode);
});
此脚本在空格键上正确提示 32,在连字符键上提示 109。另外,我没有 JavaScript 错误。
为什么if (e.keyCode == 32) return 109; 不起作用?当我用if (e.keyCode == 32) alert("space!!"); 替换该行时,我得到了正确的警报,所以我知道if 正在正确返回true。
什么给了?
编辑 - 解决方案
感谢@Nick 指出复制粘贴问题。我最终得到了一点混合动力。这是我已经开始工作的代码,它既流畅又能处理复制/粘贴。
$("#StreamUrl").keydown(function (e) {
if (e.keyCode == 32) {
$(this).val($(this).val() + "-"); // append '-' to input
return false; // return false to prevent space from being added
}
}).change(function (e) {
$(this).val(function (i, v) { return v.replace(/ /g, "-"); });
});
【问题讨论】:
-
您的代码可以正常工作,但以下情况除外:如果用户使用箭头键移动插入符号,然后键入空格,则连字符会添加到字段末尾而不是插入在插入符号位置。
-
这个解决方案可以通过使用这里的一些技巧来改进:stackoverflow.com/questions/4085312/…
标签: javascript jquery